Я знаю, что это проблема с тем, как я закодировал плагин для работы с несколькими экземплярами. Я уверен, что хотя бы одна из моих переменных перезаписывается каждым последующим вызовом плагина. Во всяком случае, вот код плагина:Плагин jQuery не работает при вызове дважды
$.fn.extend({
dependsOn: function($claimer){
$dependent = $(this);
$claimer.change(function(){
alert($dependent.attr('id'));
var $selected = $('option:selected', this);
var pk = $selected.attr('class');
$dependent.removeAttr('disabled');
$dependent.find('option').each(function(){
$hiddenOpts = $dependent.parent().find('.hiddenOptions');
$hiddenOpts.append($(this));
$hiddenOpts.find('option').each(function(){
if($(this).attr('ref') == pk || $(this).hasClass('empty'))
$dependent.append($(this));
});
});
});
}
});
Когда я называю $('.something').dependsOn($('.somethingElse'));
, он отлично работает, но если я называю его снова на два других элементах, зависимые переменные $ получает значение этого элемента.
Пункт плагина состоит в том, чтобы блокировать отдельные блоки, пока не будет изменен предыдущий поле выбора. Если у меня есть три строки выбора в строке, и я хочу, чтобы первая была включена, вторая зависела от первой, а третья зависела от второй, я бы вызвал $(second).dependsOn($(first))
и $(third).dependsOn($(second))
, поэтому изменение первого затем включало бы второе, но не третье, а второе - включение третьего.
Но с текущим кодом, изменение первого позволяет третий, но не второй (как я уже сказал, я думаю, что это потому, что $ depends перезаписывается и устанавливается на третье место после вызова dependOn дважды).
Если это неясно, дайте мне знать.
100% совершенная модель вопроса. Четкое описание того, что вы хотите, и что происходит не так, и используемый код! Brilliant. Если бы только был jsfiddle .... – mowwwalker
Я считал jsfiddle. Я начну складывать вместе. – Jake
Ничего, Гонсало прибил его. См. Здесь: http://jsfiddle.net/d8jUd/ – mowwwalker