首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selector1 -查找子项-单击Close selector1时

Selector1 -查找子项-单击Close selector1时
EN

Stack Overflow用户
提问于 2017-03-15 23:43:26
回答 2查看 14关注 0票数 0

我正在学习尽可能地组织和干净地编写我的代码,我发现在google和stackoverflow中找不到解决方案的部分。

这是我想要做的:

代码语言:javascript
复制
$('.selector').find('.close').click(function(){
  ('.selector').hide()
})

有没有办法将选择器用作$(this)

下面是一个更大的示例函数:

代码语言:javascript
复制
$(document).on('pageshow', '#page', function (){ /*do stuff*/ })
    .on('click', '.openBulk', function(){
        $('.bulk').show().find('.close')
            .click(function(){
            $(this).hide();
            //where $(this) is $('bulk'), is it possible?
    })
})
EN

回答 2

Stack Overflow用户

发布于 2017-03-15 23:49:00

在您的click处理程序中,this将引用.close元素,因为它是最后选择的元素。要返回DOM以查找父.bulk,请使用closest()

代码语言:javascript
复制
$(document).on('pageshow', '#page', function () { 
  /* do stuff */ 
}).on('click', '.openBulk', function() {
  $('.bulk').show().find('.close').click(function() {
    $(this).closest('.bulk').hide();
  })
})

还要注意,您当前在每次单击.openBulk元素时都会复制.close单击处理程序。由于.closeclick处理程序在.bulk处于隐藏状态时无法触发,因此可以通过分隔事件处理程序来使代码更清晰:

代码语言:javascript
复制
$(document).on('pageshow', '#page', function () { 
  /* do stuff */ 
}).on('click', '.openBulk', function() {
  $('.bulk').show();
})

$('.close').click(function() {
  $(this).closest('.bulk').hide();
})
票数 0
EN

Stack Overflow用户

发布于 2017-03-15 23:49:40

click事件中的$(this)指的是单击的元素,它具有类close,如果您想要获取相关的父.bulk元素,可以使用.closest().parents()

代码语言:javascript
复制
$(document).on('pageshow', '#page', function (){ 
     /*do stuff*/ 
}).on('click', '.openBulk', function(){
     $('.bulk').show().find('.close').click(function(){
          $(this); //Refer to clicked '.close'

           var parent_bulk = $(this).closest('.bulk');
           //Or also 
           var parent_bulk = $(this).parents('.bulk');
       })
    })
})

注意:您应该将事件附件放在另一个单击事件之外,否则每次单击另一个单击事件时都会附加到.close

同样,正如@Rory在评论中指出的那样,.closest().parents()的操作略有不同。closest()获取第一个匹配的父元素,而parents()获取所有父元素,所以如果您将事件附加到div,最好使用parents()

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42814485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档