2010-05-07 38 views
1

当用户从select列表中选择一个选项时,我的页面上有一个div,其内容被AJAX请求替换。页面加载时,我发出了一个命令来关闭自动完成功能为所有页的文本输入元素:将jQuery attr值应用到新的DOM元素(AJAX查询的结果)

//Stop that pesky browser autocomplete 
$('input[type=text]').attr("autocomplete", "off"); 

然而,当新的元素出现在一个AJAX调用后的股利,这行代码不引用它们是因为它们不是原始DOM的一部分(当页面被加载时)。我曾尝试追加自动完成线后函数的末尾:

//AJAX Post request that changes the fields in the address div for each different country 
$("div#address select#country").live("change", function() { 
    $.post("<?php print($_SERVER['PHP_SELF']); ?>", { country: $(this).val() }, function(data) { 
     $('div#address').html(data); 
    }, "text"); 
     $('div#address input[type=text]').attr("autocomplete", "off"); 
}); 

但由于某些原因,它不工作,自动完成时弹出的文本输入到任何地址字段。据我所知,我不能使用.live()来选择输入元素,因为更改属性不归类为事件。

那么任何人都可以告诉我如何修改新创建的DOM元素的属性?

回答

2

将新的html添加到页面后,您需要将该行放入发布函数中。

$("div#address select#country").live("change", function() { 
    $.post("<?php print($_SERVER['PHP_SELF']); ?>", { country: $(this).val() }, function(data){ 
     $('div#address').html(data); 
     $('div#address input[type=text]').attr("autocomplete", "off"); 
    }, "text"); 
}); 

如果您运行的JavaScript您有它在您的文章则.attr("autocomplete", "off");运行前的职位是完整的,因此并不适用于新的HTML的方式。将它放在发布函数中可确保您的新html在页面上。

+0

谢谢你:-) – danielcraigie 2010-05-07 12:31:29