2013-08-02 4 views
-1

я создал новый элемент в DIV с классом «инфо», с помощью HTML():JQuery событие дважды выстрелил на новый элемент

$(".info").html(
    $elementsString  // which places a bunch of form elements in there 
); 

И я огонь событие по щелчку:

$('.info').on('click', 'input', function(event){ 
    alert('ey'); 
    event.preventDefault(); 
}); 

Но это событие уволили дважды. Кто-нибудь знает, почему?

JSFiddle

Право, here «S JSFiddle.

+0

Вы могли бы опубликовать пример [jsfiddle.net] (http://jsfiddle.net), который показывает вашу проблему? – Joe

+1

Возможно, вы дважды подключили слушателя. Прочитайте, хотя код, который вызывает '$ ('. Info'). On()' – cfs

+0

Вы привязываете обработчик событий дважды случайно? Создайте демонстрацию http://jsfiddle.net/, которая воспроизводит проблему. –

ответ

1

Я думаю, что вы Шоул называют event.stopPropagation() вместо event.preventDefault();

$('.info').on('click', 'input', function(event) { 
    alert('ey'); 
    event.stopPropagation(); 
}); 
+1

Спасибо за добавление ответа, поэтому я могу принять его через несколько минут. – vanamerongen

+0

, так что это означает, что элемент .info вложен внутри .info element –

+0

Смирний прав! Вы работаете над проблемой, но не получаете ее происхождения. – TCHdvlp

0

Если event.stopPropagation() не работает, вы можете сравнить цель и currentTarget для того, чтобы убедиться, что вы на самом деле нажмите на правильный элемент , Довольно много, как это:

$('.info').on('click', 'input', function(event){ 
    if (event.target == event.currentTarget) { 
     event.preventDefault(); 
     // Do stuff here... 
    } 
}); 

Надеется, что это помогло

0

Хотя stopPropagation() работал, и я принял его в качестве ответа, корень проблемы был, по сути, причина плохой наценки. Это было немного джунглей из-за разных сценариев и PHP, написанных через все, но после очистки всего до JSFiddle (вставленного сейчас в нижней части вопроса) стало совершенно ясно, что у меня были вложенные .info элементов.

В нижней строке: было вложено .info элементов, поэтому событие было уволено с учетом обоих из них. Я решил эту проблему, изменив имя класса одного из этих элементов.

Смежные вопросы