如何获取已绑定“click”事件的选择器?

6
我使用jQuery的on函数来绑定单击事件:
$('#page-container, .some-class').on('click', '.do-something', function(event) {
    // #page-container or .some-class?
});

现在,在回调函数中,我想知道是否从#page-container.some-class触发了“click”事件。使用$(this)只能获取被单击的选择器。

5个回答

10

event对象的delegateTarget属性指向委托目标:

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

http://jsfiddle.net/SmXCG/


1
这正是我想要的,简单而且没有额外的DOM搜索。太棒了。 - zelazowy

3
尝试像这样做:

尝试像这样做

    $('#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
    });

1
“this” 指的是 .do-something 元素。 - Ram
它可以工作,但没有类规范的句号(即 some-class,而不是 .some-class)。这对我很有用。谢谢 @rajeshkakawat - H. Ferrence

2
您可以像这样做:

你可以这样做:

$('#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');
});

0

尝试

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

演示: Fiddle

0

正在工作 演示

试试这个

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接