Плагин 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')); , он работает нормально, но если я вызову его снова на два других элемента, зависимая переменная $ получает значение THAT element.

Смысл плагина состоит в том, чтобы держать поля выбора отключенными до тех пор, пока предыдущее поле выбора не будет изменено. Если у меня есть три поля выбора подряд, и я хочу, чтобы первое было включено, второе зависит от первого, а третье зависит от второго, я бы позвонил $ (second) .dependsOn ($ ( first)) и $ (third) .dependsOn ($ (second)) , поэтому изменение первого включит второе, но не третье, а изменение второго затем включит третий .

Но с текущим кодом изменение первого позволяет использовать третий, но не второй (как я уже сказал, я думаю, это потому, что $ зависимый перезаписывается и устанавливается на третье значение после двойного вызова зависимости).

Если это не ясно, дайте мне знать.

6
задан Jake 26 January 2012 в 03:30
поделиться