2013-07-11 40 views
0

我通過克隆最後一行來動態添加新行。此行包含select選取器控制。無法爲克隆的`select`控件調用`change`事件

如何爲新添加的控件創建change事件。

我嘗試了通過添加下面的腳本,但它不起作用。

console.log($('#${field_uid}-resourcetypepicker-new_' + u).attr('value')); //prints value correctly. 

//以下事件不會被調用。

$('#${field_uid}-resourcetypepicker-new_' + u).change(function() { 

     console.write('calling fine'); 
}); 

下面是呈現的HTML的東西,從螢火蟲複製:

<select id="customfield_11200-resourcetypepicker-new_3"> 
    <option value="aaa">aaa</option> 
    <option value="ddd">ddd</option> 
    <option value="ddd">ddd</option> 
</select> 

什麼可以在此的原因。其ID也匹配在changeselect都是customfield_11200-resourcetypepicker-new_3相同。

感謝

+0

顯示代碼,你動態生成的控制。 – crush

+0

_「創建更改事件...未調用事件」__您正在嘗試綁定更改事件的處理程序還是_trigger_更改事件?你的措辭有點含糊。 – nnnnnn

+0

感謝您的意見。它通過下面的答案解決了這個問題。但面臨改變事件內部的一個問題..請看下面的答案的評論。 – dsi

回答

2

在委託事件使用

$(document).on('change','#${field_uid}-resourcetypepicker-new_' + u,function() { 
    console.write('calling fine'); 
}); 

使用最接近靜態父母,而不是文件......有更好的表現

+0

謝謝,它的工作原理。但是在這個變化事件中,將'select'列表值賦給'hidden'字段,但是在螢火蟲中,它不會顯示給我分配的值。以下是相關內容: '$(document).on('change','#$ {field_uid} -resourcetypepicker-new_'+ u,function(){AJS。$('#$ {field_uid} -resourcetype- new_'+ u).attr('value',AJS。$(this).attr('value')); console.log('calling final:'+ AJS。$('#$ {field_uid} -resourcetype -new_'+ u).val()); //這個語句打印出正確的更新值,但是在螢火蟲中沒有反映出來 });'我們怎麼解決它?連續的字段。 – dsi

+0

使用prop()而不是attr()如果你使用的是最新版本的jquery ..ie jquery1.6 + – bipen

+0

它也通過prop()和attr()工作,實際上,有時螢火蟲無法檢查正確的值,但它已更新,同時保持螢火蟲關閉。只是爲了分享,也是在克隆行中,它包含了按鈕控件及其點擊事件javascript,對於按鈕點擊事件,我需要使用如下所示的'AJS。$(document).on('click','#finaladd', function(event){if(event.handled!== true){..... event.handled = true;} return false;}); //所以通過這種方式,控制存在於div及其事件中兩次,雖然它工作正常。「謝謝你的朋友。 – dsi