0

我正在使用.on()带有选择器的 jQuery 来委托给一组过滤的后代,如下所示:

selectedElement.on("click", "[data-click]", clickHandler);

在这种情况下,将 clickHandler 函数绑定到具有“data-click”属性(具有任何值)的任何后代的 click 事件。

如果selectedElement本身有“data-click”属性,则不绑定。我不能改用所选元素的父元素,因为它包含我不想绑定的其他子元素。这种绑定发生在selectedElement作为参数接收的函数内部,所以我不知道它是什么类型的元素或我将使用什么选择器来选择它。我宁愿不必单独绑定选定的元素。

有没有办法将所选元素本身包含在被过滤和绑定的集合中.on

4

2 回答 2

1

就像@Joseph Silber 说的那样,你真的不能那样做。这是我在类似情况下会做的事情:

selectedElement.on('click', function(ev) {
    // Alternatively, you could do $(this).is('[data-click]')
    if ( ev.target.hasAttribute('data-click') ) {
        clickHandler(ev);
    }
});

这样,clickHandler如果您正在这样做,您仍然可以使用您的变量。

于 2013-07-09T02:10:52.363 回答
0

我只是将它们单独绑定,但如果您坚持,您可以将它们绑定到父级并修改您的选择器以仅包含容器本身或其后代之一:

var selector = '.container[data-click], .container [data-click]';

$('.parent').on('click', selector, clickHandler);

这是小提琴:http: //jsfiddle.net/e4tDL/

于 2013-07-09T02:23:22.590 回答