【问题标题】:How does jQuery's hierarchy work when it comes to the "this" selector?当涉及到“this”选择器时,jQuery 的层次结构是如何工作的?
【发布时间】:2011-12-05 00:27:18
【问题描述】:

例如,如果我要使用这段代码:

$(".Class").children(:last).click(function(){
    $(this).siblings(":not(:last)").toggle();
}

“this”是指“.Class”类,还是指指定“.Class”类的最后一个子类?

【问题讨论】:

  • 'this' 指的是最后一个孩子。

标签: javascript jquery syntax jquery-selectors this


【解决方案1】:

this 将引用在触发事件的链中的最终选择器中匹配结果的 DOM 元素;在这种情况下,.Class:last 子级。因此,如果您单击最后一个 .Class 类的 last 子级,则会触发该事件。在这个fiddle 中查看如何只有foo2 触发警报。

<div class="Class">
    <div> </div>
    <div> </div>
    <div> </div>
   <div> </div> <!--This is the last child of .Class-->

</div>

除了,它不会像你发布的那样工作,因为:last 应该作为字符串用引号括起来。

【讨论】:

  • 感谢您的回答!我不会记得我需要引号。
【解决方案2】:

它指的是被点击的元素。也就是说,在绑定事件侦听器时,元素中的最后一个元素的类为Class。如果在事件侦听器已经绑定之后,在同一个父级中的前一个最后一个元素之后添加另一个元素,它仍然会侦听 previously 最后一个,this 也将是上一个最后一个。

【讨论】:

  • 感谢您的回答,不过您的回答很混乱。
  • 嗯?这听起来不正确。 children() 函数会将其过滤到 .Class 的子元素,而不是 .Class 本身。
  • @yahelc:你是对的。我想我没有仔细阅读。
【解决方案3】:

我认为在这种情况下它是最后一个孩子。它总是在点击词之前匹配的最后一个元素。

【讨论】:

    【解决方案4】:

    它指的是您正在操作的当前上下文。在您提供的示例中,它指的是指定“类”类的最后一个子项。

    如果您要执行以下操作:

    $(".Class").children().each(function(){
        ...
    });
    

    $(this) 会在每个孩子被迭代时引用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-18
      • 2011-07-19
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2017-03-03
      • 1970-01-01
      相关资源
      最近更新 更多