Jquery Selector, который ищет события - PullRequest
1 голос
/ 19 марта 2009

Мне нужно выбрать все элементы, которые связали событие "click"? Существует ли такой селектор?

Ответы [ 3 ]

6 голосов
/ 19 марта 2009

Он не поддерживается изначально jQuery, но вы можете написать свой собственный селектор, используя hasEvent plugin :

jQuery.expr[":"].click = "jQuery(a).hasEvent('click');";

$("a:click").doStuff();

РЕДАКТИРОВАТЬ:

Существует также плагин Event Bound Selector , который является более полным и работает из коробки, но также больше.

0 голосов
/ 19 мая 2011

Поиск позиции:

    button: function(elem){
        return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
    },
    input: function(elem){
        return /input|select|textarea|button/i.test(elem.nodeName);
    },
    //init custom
    ev: function(elem,i,match){
        var what    = $(elem).hasEvent(match[3]);
        var type    = (typeof what);
        return  what !== null && type !== undefined;
    }
    //End custom
},
setFilters: {
    first: function(elem, i){
        return i === 0;
    },
    last: function(elem, i, match, array){
        return i === array.length - 1;
    },
    even: function(elem, i){
        return i % 2 === 0;
    },

.....

такое же использование, как has()

например:

$('form:ev(submit)');
$('input:ev(click)');
$('a:ev(click)');
0 голосов
/ 19 марта 2009

Нет. Вы можете перебрать все элементы и проверить, имеют ли они привязку к событию. Но это было бы не очень эффективно, если бы вы не знали, какие элементы будут иметь привязку к этому событию, чтобы вы могли сузить поиск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...