1

我正在尝试通过 ajax 调用查看要在页面上加载的元素。我无权访问进行 ajax 调用的 jquery。所以,当一些新的 html 被加载到页面上时,我想对其进行一些更改。

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

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

这没有做任何事情。我什至尝试将其设置为实时绑定,但这并没有什么意义,但我想我会试一试。

选择器是正确的。

有任何想法吗?

4

5 回答 5

0

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

$('.autosuggest_keyword').load('/foo');
于 2010-08-11T17:02:25.073 回答
0

你知道什么叫初始ajax吗?如果是这样,您可以使用相同的事件调用函数。尽管如果您尝试更改 ajax 正在加载的内容,这可能会引起一些混乱。

于 2010-08-11T17:13:10.653 回答
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);
    }
});
于 2010-08-11T20:00:35.670 回答
0

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

$( '.autosuggest_keyword' ).live('load', 
    function()
    { 
        $( this ).val( 'load test' );
    }
);
于 2010-08-11T21:05:08.050 回答
0

我能够访问原始的 ajax 调用,所以这个问题现在没有实际意义。但是,我将其留给其他人查找,以防这些答案之一对他们有所帮助。

于 2010-08-22T21:18:18.553 回答