Conosco il modo in cui ho codificato il plug-in per gestire più istanze. Sono abbastanza sicuro che almeno una delle mie variabili venga sovrascritta da ogni chiamata successiva del plugin. Comunque, ecco il codice del plugin:Il plug-in jQuery non funziona quando viene chiamato due volte
$.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));
});
});
});
}
});
Quando chiamo $('.something').dependsOn($('.somethingElse'));
, funziona benissimo, ma se io lo chiamo di nuovo su altri due elementi, la variabile dipendente $ viene impostato su tale elemento.
Il punto del plug-in è mantenere le caselle di selezione disabilitate finché non viene modificata una casella di selezione precedente. Se ho tre caselle di selezione in una riga e voglio che la prima sia abilitata, la seconda dipende dalla prima e la terza dipende dalla seconda, chiamerei $(second).dependsOn($(first))
e $(third).dependsOn($(second))
, quindi la modifica della prima sarebbe abilitata il secondo, ma non il terzo, e cambiare il secondo permetterebbe il terzo.
Ma con il codice corrente, la modifica del primo abilita il terzo, ma non il secondo (come ho detto, penso che sia perché $ dipendente viene sovrascritto e impostato sulla terza cosa dopo aver chiamato dependsOn due volte).
Se non è chiaro, fammi sapere.
100% perfetto modello di una domanda. Chiara descrizione di ciò che vuoi e cosa non va, e il codice usato! Brillante. Se solo ci fosse un jsfiddle .... – mowwwalker
Ho considerato un jsfiddle. Inizierò a metterne uno insieme. – Jake
Nevermind, Gonzalo l'ha inchiodato. Vedi qui: http://jsfiddle.net/d8jUd/ – mowwwalker