以下代码运行一个简单的自动建议任务,这本身工作正常。问题是,当通过AJAX将带有“ausu-suggest”类的div带到页面时,它不会运行。
div内部是一个表单字段。当您开始在表单字段中键入时,autosuggest将启动。
我知道我应该使用live()函数,但我不确定语法,因为它与特定事件无关。即,下面的函数即使运行也不需要change()或onKeyUp()。
$.fn.autosugguest({
className: 'ausu-suggest',
methodType: 'POST',
dataFile: "<?=site_url('survey/search_city')?>",
minChars: 3,
rtnIDs: true,
});
编辑:实际的插件代码在http://discussion.oslund.ca/2011/01/a-simple-jquery-ajax-autosuggest-plugin/
答案 0 :(得分:1)
JavaScript代码会在某个时刻应用。它只会适用于页面上的内容,并且它不会因为DOM更改而自动重新运行。你对此负责。
在您的AJAX成功功能中,只需将autosuggest插件重新应用到新内容后加载到DOM中即可。
(作为旁注,jQuery有一个live
函数,可用于在DOM中弹出新元素时自动将事件处理程序应用于新元素,但jQuery通过将处理程序附加到祖先元素来实现此功能检查DOM更改,然后重新加载事件处理程序。它不是技术上自动。)
编辑:(示例)
$.fn.autosugguest({
className: 'ausu-suggest',
methodType: 'POST',
dataFile: "<?=site_url('survey/search_city')?>",
minChars: 3,
rtnIDs: true,
});
$.ajax({
url: 'http://domain.com/ajax',
success: function (data) {
// Write new input to DOM
$.fn.autosugguest({
className: 'ausu-suggest',
methodType: 'POST',
dataFile: "<?=site_url('survey/search_city')?>",
minChars: 3,
rtnIDs: true,
});
}
);