2013-05-07 39 views
1

我有以下處理程序設置爲什麼change()僅用於接收廣播?

form.find("input[name=url_source]").change(function() { 
      updateUrlSource(jQuery(this)) 
      }); 

我想它會被附加到與名稱的所有單選按鈕。但實際上我在調試器中看到,只有一個調用發生,只有第一個條件滿足如下:

function updateUrlSource(source) { 
    if(source.is(':checked')) { 
     // ... 
    } 
    else { 
     // ... 
    } 
} 

這是真的嗎?爲什麼?

+0

我的猜測是更改事件只發生在一個發起變化(被點擊的變化),因此.is(':checked')永遠是真實的。 – 2013-05-07 17:16:56

+0

使用'.on(「click」,function()'insteand – mplungjan 2013-05-07 17:17:35

+2

這些是單選按鈕 - 它們必須具有相同的名稱才能在同一組中 – Floremin 2013-05-07 17:19:32

回答

5

但實際上我看到的調試器,只發生一個電話,下面只有第一個條件滿足:

正確,change,只對收到檢查,而不是其他人輸入發射(可能)失去了它。詳細某處in this section of the spec埋葬,但我相信這是關鍵的一點:

如果該元素是可變的,則:預單擊激活步驟組成元素的checkedness設置爲true的。取消的激活步驟包括將元素的檢查設置爲false。 激活行爲是在元素上觸發一個名爲change的簡單事件。

(!我的重視,並非常感謝Barmar爲輔助)

下面是一個例子:Live Copy

<!DOCTYPE html> 
<html> 
<head> 
<meta charset=utf-8 /> 
<title>Radio Behavior</title> 
    <style> 
    label { 
     display: block; 
    } 
    </style> 
</head> 
<body> 
    <p>(Look in the console for the output as you click...</p> 
    <hr> 
    <label><input type="radio" name="group1" id="g1-1"> Group 1 one</label> 
    <label><input type="radio" name="group1" id="g1-2"> Group 1 two</label> 
    <label><input type="radio" name="group1" id="g1-3"> Group 1 three</label> 
    <hr> 
    <label><input type="radio" name="group2" id="g2-1"> Group 2 one</label> 
    <label><input type="radio" name="group2" id="g2-2"> Group 2 two</label> 
    <label><input type="radio" name="group2" id="g2-3"> Group 2 three</label> 
</body> 
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
    <script> 
    (function($) { 
     $("input[type=radio][name=group1]").change(function() { 
     console.log("group 1 changed to: " + this.id); 
     }); 
     $("input[type=radio][name=group2]").change(function() { 
     console.log("group 2 changed to: " + this.id); 
     }); 
    })(jQuery); 
    </script> 
</html> 
+1

Somoene else「got它「 – Barmar 2013-05-07 17:25:40

+1

文檔中的相關行是_激活行爲是觸發一個簡單事件,名爲__change的泡泡__在元素處._這是指被激活的元素,即您點擊的按鈕。 – Barmar 2013-05-07 17:32:04

+0

@Barmar:謝謝!我*認爲*這是相關的行,然後決定我不確定是否真的說*如此。 :-) – 2013-05-07 17:36:42