2011-04-15 48 views
0
<ul id='theList'> 
<li><input type='radio' name='foo' val='1' /></li> 
<li><input type='radio' name='foo' val='2' /></li> 
<li><input type='radio' name='foo' val='3' /></li> 
<li><input type='radio' name='foo' val='4' /></li> 
<li><input type='radio' name='foo' val='5' /></li> 
</ul> 

我想在某些無線電輸入被選中時顯示警報('hi')。 我試過這個:如何檢測單選按鈕列表的更改

$(function(){ 
    $('#theList input[type="radio"]').live('change', function(){ 
     alert('hi'); 
    }); 
}); 

它不起作用。 (我使用直播,因爲我通過ajax更改了ul的內容)

回答

1

您的「更改」事件處理程序可能未被正確綁定。在動態修改要綁定的元素時,live()並不總是有效。

只是爲了測試,嘗試ajaxComplete()

類似:

$('#theList').ajaxComplete(function(){ 
    <!-- attach change event --> 
}); 
1

使用.die(),因此您不會將多個點擊事件堆疊到收音機。此外,這是您需要的「點擊」事件,而不是「更改」。

$(function(){ 
    $('#theList input[type="radio"]').die().live('click', function(){ 
     alert('hi'); 
    }); 
}); 
+0

根據文檔,[更改](http://api.jquery.com/change/)確實可以處理單選按鈕。另外,你能澄清你爲什麼在init函數中使用'die()'嗎? – 2011-04-15 11:46:08

+0

我在原來的答案中提到過,我把它放在那裏,以便元素不會一次堆疊同一個事件多次。改變作品,但我總是使用「單擊」的單選按鈕,因爲它適用於所有瀏覽器沒有問題。 – 2011-04-15 12:02:58

0

你也可以在這裏的複選框被選中的點用.trigger()在你的Ajax。

我編寫了一個例子,其中點擊一個鏈接觸發的變化:

jQuery的

$('#click').click(function(){ 
    $('#theList input[val="2"]').click().trigger('contentchanged') 
}); 

$('#theList input[type="radio"]').bind('contentchanged', function() { 
    alert('hi'); 
}); 

檢查它在行動上的jsfiddle - http://jsfiddle.net/HQs8g/

希望這有助於亞歷克斯

相關問題