1

我一直在阅读 jQuery 的延迟方法,并试图在 AJAX 调用上实现它们。

我正在尝试的是侦听对元素 ( .slideLink) 的单击,获取相应 href 值的内容,然后根据结果记录结果或记录错误。

问题是,一旦页面加载,当前页面的内容就会被记录下来。点击.slideLink什么都不做。

这是我到目前为止所拥有的:

function getDetails(val){
    return jQ.get(val);
};

// click handler
jQ('#slides').on('click', '.slideLink', function(e){
    e.preventDefault();
    var addy = jQ(this).attr("href");
    getDetails(addy);
});

jQ.when( getDetails() )
    .done(function(results) {
        console.log(results);
    })
    .fail(function() {
        console.log( 'It doesn\'t work... :(' );
    });

显然我误解了一个基本原则,但我正在通过谷歌绘制空白。

4

2 回答 2

1

一旦页面加载,您就会触发 getDetails() 。此外,每次执行 getDetails() 时都会触发一个单独的请求并返回一个新的 deferred。试试这个:

function getDetails(val){
    return jQ.get(val);
}

// click handler
jQ('#slides').on('click', '.slideLink', function(e){
    e.preventDefault();
    var addy = jQ(this).attr("href");
    getDetails(addy).done(function(results) {
        console.log(results);
    })
    .fail(function() {
        console.log( 'It doesn\'t work... :(' );
    });;
});
于 2013-04-08T01:37:34.163 回答
1

看起来(从我在文档中读到的内容)将从jQ.when( getDetails() )页面加载时立即运行您的功能。

使用和回调属性可能ajax()会更好。get()donefail

function getDetails( val ) {
    $.ajax({
        type: "GET",
        url: val,
        data: (yourdata),
        success : function(){},
        error : function(){}
    })
}

此外,您可以根据需要直接调用该click()方法.slideLink

jQ('.slideLink').click(function(e) {
    e.preventDefault();
    var addy = jQ(this).attr("href");
    getDetails(addy);
});
于 2013-04-08T01:42:12.717 回答