Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除用户单击的图像_Javascript_Jquery - Fatal编程技术网

Javascript 删除用户单击的图像

Javascript 删除用户单击的图像,javascript,jquery,Javascript,Jquery,我正在做一个记忆匹配游戏。我有一些代码检查用户单击的两个图像是否具有相同的源,如果它们具有相同的源,则删除它们 (function compareClicked() { var lastclicked = ""; $("img").click(function() { var path = $(this).attr("src"); if( lastclicked == path) { $('img').hide(1000,

我正在做一个记忆匹配游戏。我有一些代码检查用户单击的两个图像是否具有相同的源,如果它们具有相同的源,则删除它们

(function compareClicked() {
    var lastclicked = "";
    $("img").click(function() {
        var path = $(this).attr("src");
        if( lastclicked == path) {
            $('img').hide(1000, function () {
            $(this).remove();
             });
        }
        else {
            if( lastclicked != "") alert("Not a match");
        }
        lastclicked = path;
    });
})();
但是,正如您所看到的,当它们具有相同的源时,它会删除页面上的所有图像,即使用户没有单击其中的任何图像。如何更改它,使其仅删除用户单击的两个图像

var lastclicked = "";
$("img").click(function() {
    var path = $(this).attr("src"); // or this.src
    if (lastclicked == path) {
        $(this).hide(1000, function() {
            // remove image with same src as lastClicked
            $('img[src="' + lastclicked + '"]').remove();
        });
    } else {
        if (lastclicked != "") alert("Not a match");
    }
    lastclicked = path;
});

如果您多次(超过两次)获得同一个Src,我建议您对单击的图像进行
标记,以知道应该隐藏哪个图像。

如前所述,您可以使用
attr
或特殊
class
来实现此目的。

类似的东西怎么样

var lastEl = null;

$(document).ready(function(){

$('img').each(function(index){
  $(this).attr('id','img-' + index);
});    

$('img').click(function(){
  if( lastEl ) {
    if( ($(this).attr('src') == lastEl.attr('src')) && ($(this).attr('id') != lastEl.attr('id')) ) {
      $(this).remove();
      lastEl.remove();
    }
    lastEl = null;
  } else {
    lastEl = $(this);
  }
});

});
还没有测试过,但一定很接近

编辑:根据下面的对话更新代码。我在这儿拉小提琴


再次编辑:JS fiddle链接现在应该正确了

您的问题出在
$('img')。隐藏
,您选择的是所有图像,而不是您单击的图像。。您想执行
$(此操作)。隐藏
指的是您刚才单击的img以及您可以在单击的图像上使用的函数的上下文
。attr
,以便稍后轻松查找。感谢大家的帮助。但是,这只会删除一个图像。我正在寻找它来删除两个具有相同来源的图像。这将只在他有两个相同的Src时才起作用。但假设他在比赛中得到了6个“太阳”,这将删除所有6个。@MichaelLaffargue是的,但从问题来看,我认为OP没有这样的问题。很抱歉成为一个唠叨者,但这仍然只删除最后单击的图像。@Kreacher请检查我的小提琴,如果你有一些问题,请发表评论你是对的!但我认为,由于上下文的关系,一个记忆匹配的游戏,不会有超过两倍的相同src@OscarSan好吧,这取决于比赛;)已经看过很多多组合的匹配游戏。我不知道是谁给了你-1,但这应该很有效,唯一的问题是你应该检查一下
$(这个)!=拉斯泰尔
谢谢,也许他们注意到我错过了刚才添加的全局搜索;-)另外,如果不清楚我是否遵循卡1的经典模式,请在卡2上查找匹配项,是/否,重置。对不起,Michael,我正忙于尝试连接小提琴链接,我现在会更正它。我已添加了该检查,但在同一张卡上单击两下仍会删除它。有什么想法吗?