Почему IE8 зависает при запуске этого jQuery - IE7, FF и т. Д. В порядке? - PullRequest
2 голосов
/ 12 августа 2010

У меня есть форма с полем выбора.В зависимости от выбора должно появиться необязательное второе поле (различное для каждого выбора) для сбора дополнительной информации.У меня был скрипт, который я написал в jQuery, чтобы сделать это, и я быстро преобразовал его в плагин (с намерением добавить больше моего обычно используемого кода, связанного с формой, к плагину позже - obv с изменениями, которые будут следовать в этом отношении).

В любом случае, проблема в том, что этот код прекрасно работает в IE7, Firefox, Chrome, Opera и т. Д. Но это постоянно приводит к полной остановке установки IE8 на нескольких разных компьютерах.Это никогда не размораживается и никогда не дает ошибку.Я озадачен тем, почему это может случиться, или как устранить неполадки, учитывая отсутствие какой-либо информации для отладки.

HTML обычно выглядит так (отрывок).

<!-- Controls Below -->
<li class="group-1 has-dependents">
   <label for="selSource">How did you hear about us?</label>
   <select id="selSource" name="selSource">
       <option value="0">Select One</option>
       <option class="group-referral" value="1">Referral</option>
       <option class="group-conference" value="4">Conference</option>
       <option class="group-other" value="7">Other</option>
   </select>
</li>

<!-- Controlled Above -->
<li id="itemSource" class="group-1 dependent">
   <!-- Opt 1 -->
   <label for="selSourceReferral" class="group-referral">Who gave the referral?</label>
   <select name="selSourceReferral" id="selSourceReferral" class="group-referral" disabled="disabled">
       <option value="0">Select One</option>
       <option value="101">....</option>
       <option value="102">....</option>
       <option value="103">....</option>
       <option value="999">....</option>
   </select>

   <!-- Opt 2 -->
   <label for="selSourceConference" class="group-conference">Which conference?</label>
   <select name="selSourceConference" id="selSourceConference" class="group-conference" disabled="disabled">
       <option value="0">Select One</option>
       <option value="101">....</option>
       <option value="102">....</option>
       <option value="103">....</option>
       <option value="999">....</option>
   </select>  

  <!-- Opt 3 -->
   <label for="txtSourceOther" class="group-other">Please Specify</label>
   <input type="text" name="txtSourceOther" id="Text1" class="group-other" disabled="disabled" />
   <input type="text" name="txtSourceSubOther" id="Text2" class="group-other" disabled="disabled" />
</li>

Код плагина выглядит следующим образом:

(function($){

    /* Show associated fields based on current selection */
    function show_dependents(_this, _event){
        var current = $('select option[value=' + $(_this).val() + ']').attr("class");
        if(current.length > 0){
            var temp = $(_this).closest('label, li, div, fieldset').attr("class").split(' ');
            for(var i = 0; i < temp.length; i++){
                if(temp[i].search("group-") >= 0){
                    temp = "." + temp[i] + "." + "dependent";
                    $(temp).find('label, input, select, li, div, fieldset').not('.' + current).fadeOut(function(){
                        $(temp).find('label, input, select, li, div, fieldset').not('.' + current).hide();
                    });
                    $(temp).find('.' + current).removeAttr('disabled').fadeIn();        
                }
            }
        }
    }

    $.fn.rlmforms = function(options){      
        return this.each(function(){

            $(this).bind('change.current', 
                function(e){
                    show_dependents(this, e);
                }
            );          
            $(this).trigger('change.current');
        }); // this.each()
    } // $.fn.rlmforms = function(options)

})(jQuery);

Он называется:

$('#selSource').rlmforms();

Есть идеи?Обратите внимание, что он не останавливается при загрузке страницы, а останавливается при щелчке по полю родительского выбора.Параметры раскрываются, и один из них можно щелкнуть и выделить.В этот момент браузер полностью зависает и никогда не замораживается.Раскрывающийся список даже не возвращается, но остается выделенным, а тот, который был нажат, выделен.

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