addEventListener в jQuery

Возможный дубликат:
эквивалент jQuery метода addEventListener в JavaScript < / а>

Также из очень хорошего учебника jQuery на: http://itunes.apple.com/in/app/designmobileweb/id486198804?mt=8

Что эквивалентно jQuery для следующего оператора;

element1.addEventListener('click',doSomething2,false)

Если это метод bind (), есть ли возможность указать последний параметр (т. Е. Всплытие или захват события ... true / false)

Спасибо.


person Diana    schedule 11.08.2011    source источник
comment
Да, третий параметр bind все еще можно использовать для этого: api.jquery.com/bind   -  person James Allardice    schedule 11.08.2011
comment
false используется по умолчанию для всех обработчиков событий, поскольку IE не поддерживает запуск обработчика на этапе захвата. С помощью jQuery невозможно установить значение true.   -  person Felix Kling    schedule 11.08.2011
comment
@James: Думаю, вы неправильно поняли третий параметр. Это либо функция, либо false, но false в этом случае означает: Установка для третьего аргумента значения false присоединит функцию, которая предотвращает выполнение действия по умолчанию и останавливает всплытие события..   -  person Felix Kling    schedule 11.08.2011
comment
@Felix - установка для третьего аргумента значения false присоединит функцию, которая предотвращает выполнение действия по умолчанию и останавливает всплытие события. Или я неправильно понял вопрос?   -  person James Allardice    schedule 11.08.2011
comment
Вопросы того же типа: stackoverflow.com/questions / 2398099 /   -  person Mr.T.K    schedule 11.08.2011
comment
@James: передача false в addEventListener не предотвращает всплытие события. Он указывает, в какой фазе должен запускаться обработчик событий. См. developer.mozilla.org/en/DOM/element.addEventListener.   -  person Felix Kling    schedule 11.08.2011
comment
@Felix - Спасибо, что прояснили это.   -  person James Allardice    schedule 11.08.2011


Ответы (4)


Попробуй это

// Setting the third argument to false will attach a function
// that prevents the default action from occurring and 
// stops the event from bubbling.
$("#element1").bind("click", doSomething2, false);
person ShankarSangoli    schedule 11.08.2011
comment
Правда, стоит отметить, что добавлено только с версии 1.4.3. - person Shadow Wizard Wearing Mask V2; 11.08.2011
comment
Это не эквивалент третьего параметра addEventListener. Это просто ярлык для function(){ return false; }. Вызов, как вы написали, будет рассматривать doSomething2 как данные о событии (и, вероятно, выдаст ошибку). - person Felix Kling; 11.08.2011
comment
@Felix - я согласен с вами, но OP хотел что-то подобное, чтобы предотвратить всплытие события, передав параметр. - person ShankarSangoli; 11.08.2011
comment
@Shankar: Нет, передача false в addEventListener этого не делает (предотвращает образование пузырьков). Он просто указывает, в какой фазе должен запускаться обработчик событий. Взгляните на developer.mozilla.org/en/DOM/element.addEventListener - person Felix Kling; 11.08.2011
comment
@Felix - я не говорю, что предложенное мной решение в точности эквивалентно ему. Но он решает то, что OP упомянул во второй строке вопроса вместе с привязкой. - person ShankarSangoli; 11.08.2011
comment
@Diana - Тебе это помогло? - person ShankarSangoli; 11.08.2011
comment
@ShankarSangoli: Что именно он решает? Определенно не всплытие или захват событий ... - person Felix Kling; 11.08.2011
comment
@Felix - передача false в качестве третьего параметра методу bind добавит функцию, которая предотвращает выполнение действия по умолчанию. происходит и останавливает всплытие события. - person ShankarSangoli; 11.08.2011
comment
@ShankarSangoli: Да. Но OP говорит не об этом (где написано, что событие должно быть остановлено?). Он не хочет останавливать восходящую цепочку, он хотел указать, запускается ли обработчик в фазе захвата или в фазе восходящей цепочки. А с jQuery это невозможно. - person Felix Kling; 11.08.2011
comment
@Felix - Может быть, я неправильно понял эту часть вопроса, извините за это. - person ShankarSangoli; 11.08.2011

Да, я уверен, что .bind () будет работать так, как вам нужно. Посетите страницу документации jQuery .bind (). Я уверен, что вы сможете разобраться в настройке. Демо-код ниже:

$(document).ready(function() {
    $("#element1").bind('click', function() {
        // do something on click
    } 
});
person Jake    schedule 11.08.2011

используйте метод привязки jquerys

пример:

document.bind("custom-listener", someCustomFunction, false);

document.trigger("custom-listener", {jsonArgsKey:jsonValue});

function someCustomFunction(json)
{
alert(json.jsonArgsKey);
}
person Baz1nga    schedule 11.08.2011
comment
Вы забыли свою $ функцию! Вы не имеете в виду $(document).bind... и т. Д.? - person Abraham; 11.08.2011

Нравится:

$(element1).click(doSomething)

Если вы хотите остановить всплытие, вызовите event.stopPropagation() в своей функции doSomething, например:

function doSomething (event){
  event.stopPropagation()
  // do whatever
}

Однако нет возможности настроить обработчик событий захвата с помощью jQuery.

person Abraham    schedule 11.08.2011