jQuery - 在通过ajax加载元素后执行某些操作,但不在ajax函数中加载

时间:2010-08-11 16:59:30

标签: jquery ajax jquery-load

我正在尝试从ajax调用中查看要在页面上加载的元素。我无法访问正在进行ajax调用的jquery。因此,当一些新的html加载到页面上时,我想对它应用一些更改。

我目前正在尝试使用.load()函数:

$( '.autosuggest_keyword' ).load( 
    function()
    { 
        $( this ).val( 'load test' );
    }
);

哪个没做任何事情。我甚至尝试过制作一个实时绑定,这听起来没有意义,但我想我会尝试一下。

选择器是正确的。

有什么想法吗?

5 个答案:

答案 0 :(得分:0)

.load()函数需要一个发送AJAX请求的URL,从服务器获取数据并更新选择器中的给定元素。所以你需要传递一个URL:

$('.autosuggest_keyword').load('/foo');

答案 1 :(得分:0)

你知道什么叫theital ajax吗?如果是这样,您可以使用相同的事件调用函数。如果你试图改变ajax正在加载的东西,这可能会引起一些混乱。

答案 2 :(得分:0)

鸭子打孔可能就是答案:

should('duck-punch ajax success handler', function() {
    var origAjax = $.ajax;

    $.ajax = function(settings) {
        if(settings.url === 'the/request/page') {
            var origSuccess = settings.success;
            settings.success = function(responseHTML) {
                origSuccess.call(this, responseHTML);
                //apply some changes to html
            }

        }
        origAjax.call(this, settings);
    }
});

答案 3 :(得分:0)

当你调用.load时,它会将事件处理程序绑定到与你调用它时选择器匹配的元素。由于之后添加了元素,因此它永远不会被绑定。 .live函数通过绑定到与选择器匹配的currrent 和future 元素来解决此问题。我想你想要的是这样的(未经测试):

$( '.autosuggest_keyword' ).live('load', 
    function()
    { 
        $( this ).val( 'load test' );
    }
);

答案 4 :(得分:0)

我能够访问原始的ajax调用,所以现在这个问题没有实际意义。但是,如果其中一个答案对他们有帮助,我会把它留给其他人找。