-2
我正在使用基於select元素值更改的ajax表單,將ajax請求發送到服務器,然後返回json字符串。我基於這個json字符串構建第二個表單。問題是我想基於第二個選擇元素值更改(通過JavaScript生成的)第三個選擇元素。在時,我想用變化事件上班這一情況,這是行不通的:jQuery on('change')不起作用
我的JavaScript代碼至今:
jQuery("#make").on('change',function(){
var value = jQuery(this).val();
if(value != 0)
{
jQuery.getJSON("<?php echo site_url('ajax/get/models'); ?>",
{makeId:value},
function(data){
if(data != "false")
{
var modelsSelect = document.createElement('select');
modelsSelect.setAttribute('name','model');
modelsSelect.setAttribute('id','model');
var modelOption = document.createElement('option');
modelOption.setAttribute('value',0);
modelOption.appendChild(document.createTextNode("sample text"));
modelsSelect.appendChild(modelOption);
jQuery.each(data, function(index, item) {
var modelOption = document.createElement('option');
modelOption.setAttribute('value',item.id);
modelOption.appendChild(document.createTextNode(item.model.toString()));
modelsSelect.appendChild(modelOption);
});
jQuery("#model").replaceWith(modelsSelect);
return false;
}
else
{
return false;
}
}
);
}
else
{
var modelsSelect = document.createElement('select');
modelsSelect.setAttribute('name','model');
modelsSelect.setAttribute('id','model');
modelsSelect.setAttribute('disabled','disabled');
var modelOption = document.createElement('option');
modelOption.setAttribute('value',0);
modelOption.appendChild(document.createTextNode("sample text"));
modelsSelect.appendChild(modelOption);
jQuery("#model").replaceWith(modelsSelect);
return false;
}
});
jQuery("#model").on('change',function(){
alert("change");// THIS DOES NOT WORK
return false;
});
沒錯。但你能解釋一下這個原因嗎? – Ramin
我應該爲每個要處理其事件的元素使用此語法? – Ramin
您應該用#model的最接近的非動態父級替換'document',並且對於動態添加的元素,這是委派事件處理程序的方式。 – adeneo