jQuery选择通过Ajax加载的元素

时间:2011-06-24 14:27:53

标签: jquery

以下代码运行一个简单的自动建议任务,这本身工作正常。问题是,当通过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/

1 个答案:

答案 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,
        });
    }
);