Селектор класса JQuery запускает событие более чем на несколько попыток - PullRequest
1 голос
/ 22 декабря 2011

Давайте сохраним У меня есть пара div с тегами привязки, которые имеют тот же класс, что и

<div id="div1">
<input type="hidden" value ="1"/>
<a class="class1">Click 1</a>
</div>
<div id="div2">
<input type="hidden" value ="2"/>
<a class="class1">Click 2</a>
</div>

И теперь я хочу, чтобы селектор прослушивал один из якорей, по которому нужно щелкнуть.

$('.class1').click(function(){
var hidVal = $(this).prev().val();
AlerthiddenVal(hidVal);
});

И простая функция для оповещения о том, что щелкнули

function AlerthiddenVal(val){
alert(val);
}

Теперь все это работает нормально в первый раз, при втором запуске я запускаю функцию один раз сзначение первого клика, а затем в другой раз с правильным значением, это продолжается и продолжается, когда я нажимаю больше тегов привязки.Может кто-нибудь помочь мне решить эту проблему, спасибо за любую помощь.

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

это происходит, когда вы связываете функцию больше времени если вы дважды связываете это событие с class1, функция AlerthiddenVal будет выполняться дважды

Решением является попытка привязать это событие один раз, когда документ загружается только ИЛИ ЖЕ если это необходимо, чтобы связать его после многих событий вам нужно вызвать функцию unbind перед rebinding (), например:

$('.class1').unbind();
$('.class1').click(function(){
var hidVal = $(this).prev().val();
AlerthiddenVal(hidVal);
});
0 голосов
/ 22 декабря 2011
$('.class1').click( function(){
  AlerthiddenVal( 
         $("input",$(this).parent() ).val()  
  );
});
0 голосов
/ 22 декабря 2011

Попробуйте это:

$('.class1').click(function(e){
    e.stopImmediatePropagation();
    var hidVal = $(this).prev().val();
    AlerthiddenVal(hidVal);
});

Уведомление e.stopImmediatePropagation().У меня была проблема, похожая на вашу, и это решило ее.

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