2

我正在尝试查看用户单击的两个图像是否相同。我有一些代码可以检索被点击的图像的来源:

$('img').click(function() { var path = $(this).attr('src'); });

我只需要一种方法来比较两个来源。我尝试将源存储在一个数组中并查看它们是否相等,但我无法让它工作:

var bothPaths = [];

$('img').click(function() {
    var path = $(this).attr('src');
    bothPaths.push(path);
}); 

if (bothPaths[0] == bothPaths[1]) {
    alert("they match.");
} else {
    alert("they don't match.");
}

我假设这将比较用户单击的前两个图像源,但我似乎在某个地方遇到了问题。

4

3 回答 3

6

您正在检查路径是否匹配...在单击任何内容之前。

相反,试试这个:

(function() {
    var lastclicked = "";
    $("img").click(function() {
        var path = $(this).attr("src");
        if( lastclicked == path) {
            alert("Match!");
        }
        else {
            if( lastclicked != "") alert("No match...");
        }
        lastclicked = path;
    });
})();
于 2012-06-18T19:26:18.973 回答
1

您的 if 语句仅在加载时被解释,试试这个:

var bothPaths = [];

$('img').click(function() {
    var path = $(this).attr('src');
    bothPaths.push(path);
    compare()
}); 

function compare() {
   if (bothPaths[0] == bothPaths[1]) {
      alert("they match.");
   } else {
       alert("they don't match.");
   }
}
于 2012-06-18T19:28:26.463 回答
0

单击图像后,单击处理程序会将内容添加到数组中。您的比较发生在您的点击处理程序附加后。换句话说,在任何人有机会点击任何内容之前,您先比较数组中的前两个位置。

这是您应该学习的一些最佳实践代码。它将帮助您了解页面的生命周期以及 jQuery 如何与它进行最佳交互。

$(document).ready(function(){
    var lastClicked = '';
    $(document).on('click', 'img', function(){
        var src = $(this).attr('src');
        if (src == lastClicked) {
            alert('matching');
        } else {
            lastClicked = src;
        }
    });
});
于 2012-06-18T20:07:57.513 回答