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 に答える