【问题标题】:How to get selector on which 'click' event has been bound?如何获取已绑定“点击”事件的选择器?
【发布时间】:2013-09-04 10:39:28
【问题描述】:

我正在使用 jQuery on 函数来绑定点击事件:

$('#page-container, .some-class').on('click', '.do-something', function(event) {
    // #page-container or .some-class?
});

现在在回调函数内部,我想知道“点击”事件是否已从#page-container.some-class 触发。使用$(this),我只能得到已点击的选择器。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    event 对象的delagateTarget 属性指代委托的目标:

    $('#page-container, .some-class').on('click', '.do-something', function(event) {
        var dt = event.delegateTarget;
    });
    

    http://jsfiddle.net/SmXCG/

    【讨论】:

    • 这正是我想要的,简单且无需额外的 DOM 搜索。太棒了。
    【解决方案2】:

    试试这样的

        $('#page-container, .some-class').on('click', '.do-something', function(event) {
            $(this).attr('id'); // #page-container 
    
            $(this).hasClass('.some-class'); //Will return true if it has some-class
        });
    

    【讨论】:

    • this 指的是.do-something 元素。
    • 它可以工作,但没有类规范的句点(即some-class,而不是.some-class)。这对我很有用。谢谢@rajeshkakawat
    【解决方案3】:

    你可以这样做:

    $('#page-container, .some-class').on('click', '.do-something', function (event) {
        if ($(this).closest('#page-container').length) 
            alert('Its #page-container');
        else if ($(this).closest('.some-class').length) 
            alert('Its .some-class');
    });
    

    【讨论】:

      【解决方案4】:

      试试

      $('#page-container, .some-class').on('click', '.do-something', function(event) {
          var isSomeClass = $(this).closest('.some-class').length > 0
      });
      

      演示:Fiddle

      【讨论】:

        【解决方案5】:

        工作DEMO

        试试这个

        $('#page-container, .some-class').on('click', function(event) {
        alert($(this).text());
        });
        

        【讨论】:

          猜你喜欢
          • 2015-07-14
          • 1970-01-01
          • 2016-05-09
          • 2016-09-25
          • 1970-01-01
          • 1970-01-01
          • 2014-07-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多