JQuery селекторы (выберите только цель, без потомков) - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу привязать событие только к "страницам" в jQuery. Проблема в том, что код выполняется не только для «страниц», но и для всех потомков, когда используется addClass. Я хочу, чтобы вызвать событие, только когда addClass используется для "страниц" div. Как я могу это сделать?

//https://stackoverflow.com/a/31859060/2947462
(function( func ) {
    $.fn.addClass = function() { // replace the existing function on $.fn
        func.apply( this, arguments ); // invoke the original function
        this.trigger('eventAddClass'); // trigger the custom event
        return this; // retain jQuery chainability
    }
})($.fn.addClass); // pass the original function as an argument


$(document).on( "eventAddClass", 'div[data-role="page"]', function(event) {
    //code - do some stuff
});

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете это.

Это пузырьки событий. прочитайте это ~ https://www.sitepoint.com/event-bubbling-javascript/

$(document).on( "eventAddClass", 'div[data-role="page"]', function(event) {
    if(event.target !== event.currentTarget) return;

    // your custom code
});
...