Рекурсия в событие jQuery - PullRequest
       2

Рекурсия в событие jQuery

3 голосов
/ 13 февраля 2012

Это событие прикреплено к набору элементов:

var elems = $(this).filter(function(){
  ...
});

Как я могу вызвать событие изменения для этих элементов в обработчике события изменения, но игнорировать текущий элемент?

elems.bind('change input', function(){

  // do some stuff...

  // then trigger change, but not on "this", to avoid the recursion issue
  elems.change(); 

});

В основном я хочу не игнорировать this из elems, но только в моем "ручном" изменении () - вызов выше ...

Ответы [ 3 ]

3 голосов
/ 13 февраля 2012
var elems = $(this).filter(function(){
  ...
});

elems.bind('change input', function(){


  // then trigger change, but not on "this", to avoid the recursion issue
  elems.not(this).change(); 

});

Хотя я должен сказать, что этот сценарий выглядит как проблема с плохим дизайном.
Когда элемент изменяется, он устанавливает обратный вызов события изменения для некоторых элементов, включая его самого ... звучит неловко, и эта рекурсия является просто признаком другой большой проблемы ...

Вероятно, это можно сделать намного чище, чем это.

3 голосов
/ 13 февраля 2012

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

elems.not(this).change(); 
2 голосов
/ 13 февраля 2012

Вы можете просто отфильтровать текущий элемент:

elems.not(this).trigger('change'); // or just .change()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...