2014-04-03 50 views
0

單擊單選按鈕時,是否可以讓jquery對onChange進行重新規劃?如何讓jquery使用單選按鈕識別更改

我的HTML標記:

<div class="wf__jqAPcontrol[1] wf__hide wf__optional" style="display: block;"> 
<label>Additional Info</label> 
<fieldset class="wf__list wf__jqAPhtml" enabled="enabled"> 
<fieldset class="vf__list vf__jqAPhtml" enabled="enabled"> 
<label for="specialDiscount[1]_529663" style="padding: 0 !important"> 
<input type="checkbox" value="-5.00" name="specialDiscount[1]" id="specialDiscount[1]_529663" class="wf__list jq__recomputeThisService" checked="checked"> Discount (5%) 
</label> 
</fieldset> 
</div> 

我有這樣的jQuery代碼(網頁上,底部剛剛結束標記之前流):

<script> 
    $('.jq__recomputeThisService').change(function() { 
    ... 
    }); // end .change() 
</script> 

點擊複選框不喚起。 change()函數。它只能用onclick()嗎?

如果是這樣,我該如何獲得鼠標按鈕單擊操作來調用我的.change()函數?

+0

哪裏是.change()函數在頁面上?你的代碼是否在document.ready函數中運行? –

+0

您是否動態添加HTML? – Satpal

+1

是的,我是@Satpal - 也使用開源工具。這就是標記看起來像它的原因。 –

回答

1

事件處理程序僅綁定到當前選定的元素;它們必須在代碼進行事件綁定調用時存在於頁面上。

委託事件的優點是它們可以處理來自稍後添加到文檔中的後代元素的事件。

正在動態添加HTML。

您需要使用Event Delegation。您必須使用委託事件方法使用.on()

常規語法

$(document).on(event, selector, eventHandler); 

理想情況下,你應該用最接近的靜態容器更換document

$(document).on('change', '.jq__recomputeThisService', function() { 

}); 
+0

謝謝@Satpal。我將與你在這裏分享的內容一起工作,看看我能否實現它。 –

+1

真棒超讚的@Satpal。你非常想幫忙。我一直在這個問題上旋轉我的輪子看錯了地方大約3個小時。非常感謝您的幫助。 –

0

使用name屬性來選擇它

$("input[name='specialDiscount[1]']").change(function() { 

}); 

,或者是動態創建的名稱,你可以使用

$("input[name^='specialDiscount']").change(function() { 

    }); 
+0

我有一大塊代碼,我執行onchange。 onchange可以從select元素,input元素或複選框元素中引發。這就是爲什麼我把'jq__recomputeThisService'放在class屬性上的原因。那麼,我將如何獲得所有更改事件以調用相同的函數@ argonaut36? –

相關問題