2014-06-28 24 views
0

JS小提琴:爲什麼我的jQuery.change事件只在單選按鈕上運行一次?

http://jsfiddle.net/3F6TY/

你需要Bootstrap.js這一點。

一些其他的SA線程表示這可能是一個委託問題,但我沒有理由在代碼中進行委派,因爲選擇器從未在HTML中更改或消失。

當我點擊First Radio時,手風琴就響了,但是當我點擊它時,手風琴並沒有像我想要的那樣藏起來。我寫了我的代碼,以便在單選按鈕的change上檢查單選按鈕是否被選中,如果不是,則摺疊手風琴。

  <div class="radio col-xs-12"> 
      <label> 
       <input type="radio" name="radios" class="track-order-change" id="firstRadio" value=""> 
       First Radio 
      </label> 
      </div> 

      <div class="col-xs-12 panel-collapse collapse" id="firstAccordion"> 
      <div> 
       First Accordion 
      </div> 
      </div> 

      <div class="radio col-xs-12"> 
      <label> 
       <input type="radio" name="radios" class="track-order-change" id="secondRadio"> 
       Second Radio 
      </label> 
      </div> 

      <div class="col-xs-12 panel-collapse collapse" id="secondAccordion"> 
      <div> 
       Second Accordion 
      </div> 
      </div> 

      <div class="radio col-xs-12"> 
      <label> 
       <input type="radio" name="radios" class="track-order-change" id="thirdRadio"> 
       Third Radio with no Accordion 
      </label> 
      </div> 


$('input[id="firstRadio"]').change(function() { 

    if ($(this).is(":checked")) { 

     $('#firstAccordion').collapse('show'); 

    } else { 

     $('#firstAccordion').collapse('hide'); 
    } 

}); 

回答

1

更改事件僅附加到第一個單選按鈕。在用戶點擊的單選按鈕上觸發只有更改事件,所以單擊任何其他單選按鈕時,第一個事件不會觸發。

換句話說,事件不是隻觸發一次,而是看起來像這樣,因爲只有在單擊第一個單選按鈕時才觸發。

附上事件的所有單選按鈕來代替:

$('input[name="radios"]').change(function() { 
    if ($('#firstRadio').is(":checked")){ 
     $('#firstAccordion').collapse('show'); 
    } else { 
     $('#firstAccordion').collapse('hide'); 
    } 
}); 

Demo

+1

嗯?我不明白。當用戶點擊另一個單選按鈕時,第一個單選按鈕會自動取消選中,這意味着它會被「更改」,對嗎? – fuzzybabybunny

+0

是的,但它不會觸發更改事件。 – JJJ

+0

哎呀。我在文檔中找不到任何地方。你應該如何知道單選按鈕不會實際觸發更改事件?另外,是否還有其他一些事件監聽器,當單選按鈕通過其他方法被選中時,它會工作?海事組織剛剛發生的事情顯示了改變聽衆的明顯不足。 – fuzzybabybunny

0

試試這個代碼了..我這樣做是爲了你,但嘗試代碼自己下一次..這將有助於你很多..

$('input[type="radio"]').change(function() { 
     if ($(this).attr("id") == "firstRadio"){ 
      if($(this).is(":checked")){ 
       $('#firstAccordion').show("fast"); 
       $('#secondAccordion').hide("fast"); 
       $('#thirdAccordion').hide("fast"); 
      } 
     } else if ($(this).attr("id") == "secondRadio"){ 
      if($(this).is(":checked")){ 
       $('#firstAccordion').hide("fast"); 
       $('#secondAccordion').show("fast"); 
       $('#thirdAccordion').hide("fast"); 
      } 
     } else if ($(this).attr("id") == "thirdRadio"){ 
      if($(this).is(":checked")){ 
       $('#firstAccordion').hide("fast"); 
       $('#secondAccordion').hide("fast"); 
       $('#thirdAccordion').show("fast"); 
      } 
     } 
    }); 
相關問題