理解JQuery选择器时遇到的问题

理解JQuery选择器时遇到的问题,jquery,css-selectors,Jquery,Css Selectors,例如,如果我点击add+9次,我将有10个框。但在此之后,只有单击最后一个框,它才会隐藏。(我想通过单击该框来隐藏特定框)。顺便说一下,在点击最后一个盒子(并去除封皮)后,另一个盒子不会以任何方式隐藏 我有什么问题 $(document).ready(function(){ $("#add").click(function(){ $(".test:last").clone().insertAfter(this); }) $(".test").click(f

例如,如果我点击add+9次,我将有10个框。但在此之后,只有单击最后一个框,它才会隐藏。(我想通过单击该框来隐藏特定框)。顺便说一下,在点击最后一个盒子(并去除封皮)后,另一个盒子不会以任何方式隐藏 我有什么问题

$(document).ready(function(){
    $("#add").click(function(){
        $(".test:last").clone().insertAfter(this);
    })
    $(".test").click(function(){
        $(this).hide("slow");
    })
})

<div id="add">ADD+</div>
<div class="test" style="border:1px solid black; width:70px; height:25px;">
    box
</div>
$(文档).ready(函数(){
$(“#添加”)。单击(函数(){
$(“.test:last”).clone().insertAfter(this);
})
$(“.test”)。单击(函数(){
$(这个)。隐藏(“慢”);
})
})
加+
盒

因为您只连接文档加载时存在的一个。改变

$(".test").click(function(){
    $(this).hide("slow");
})

单击
用于将事件连接到已存在的元素。使用
live
,您可以更具推测性地说“将此事件连接到任何已存在的事件,和以后添加的与此选择器匹配的任何事件”。如果您想要
live
的功能,还可以使用
delegate
,但对于特定元素的后代来说,它很有用

详情:


因为您只连接文档加载时存在的一个。改变

$(".test").click(function(){
    $(this).hide("slow");
})

单击
用于将事件连接到已存在的元素。使用
live
,您可以更具推测性地说“将此事件连接到任何已存在的事件,和以后添加的与此选择器匹配的任何事件”。如果您想要
live
的功能,还可以使用
delegate
,但对于特定元素的后代来说,它很有用

详情:

使用
.clone(true)
而不仅仅是
.clone()
来复制事件处理程序

示例:


我还想补充一点,您可能需要从以下位置更改选择器:

$(".test:last")
为此:

$(".test:visible:last")
因此,如果隐藏最后一个框,就不会克隆已隐藏的框

示例:

使用
.clone(true)
而不仅仅是
.clone()
来复制事件处理程序

示例:


我还想补充一点,您可能需要从以下位置更改选择器:

$(".test:last")
为此:

$(".test:visible:last")
因此,如果隐藏最后一个框,就不会克隆已隐藏的框

示例:

  • 你应该花更多的时间写你的问题来纠正你的拼写和语法
  • 这个问题以前在很多方面都被问过
  • 看看这张照片,或者
  • 你应该花更多的时间写你的问题来纠正你的拼写和语法
  • 这个问题以前在很多方面都被问过
  • 看看这张照片,或者
  • 添加了
    :每个评论建议可见


    添加的
    :每个评论建议可见

    这是另一种方式,是的。这是另一种方式,是的。这些是评论,不是答案。@TJCrowder,我通常愿意花时间为愿意花时间回答问题的人写一个完整的答案。这更多的是为了说明问题,所以用评论来说明问题。答案和评论之间有区别是有原因的。这些是评论,不是答案。@TJCrowder,我通常愿意花时间为愿意花时间回答问题的人写一个完整的答案。这更多的是为了说明问题,所以用评论来说明问题。答案和评论之间有区别是有原因的。没有区别,有时你会得到许多简单问题的答案,这些答案在功能上都是相同的。没有区别,有时你会得到许多简单问题的答案,这些答案在功能上都是相同的