2012-01-24 96 views
1

如何選擇$ .ajax的父元素或觸發$ .ajax的元素的父元素。我需要某種形式的參考,所以我可以申請結果數據發送給它:

var a = $a.val(); 
var b = $b.val(); 

$.ajax({ 
     type: "POST", 
     url: "/Controller/Action", 
     data: { a: a, b: b }, 
     success: function (data) { 

      var values = data.values, 
       $elements = $(); 
       for (i = 0; i < 142; i++) { 
        $elements = $elements.add($("<div class='single'>").css('height', values[i]).css('margin-top', 26 - valuesG[i])); 
       } 
       //Here it should reference $(this).parent().parent().. something 
       //and not :last, because there are many .second elems... 
       //not only :last is being changed? 

       $elements.appendTo($(".second:last")); 
       $(".second:last").children(".single").addClass("ui-selected"); 
     }, 
     traditional: true 
}); 

$(this).parent()在阿賈克斯成功函數返回jQuery() 任何想法?

$.ajax({ 
    url: "test.html", 
    context: document.body, 
    success: function(){ 
     $(this).addClass("done"); 
    } 
}); 

jQuery Reference

回答

6

使用上下文選項。

爲避免這種情況,在ajax調用開始在success內部開始使用之前,將elementreference保存在variable中。

target_element = $(this); 

$.ajax({ 
     type: "POST", 
     url: "/Controller/Action", 
     data: { a: a, b: b }, 
     success: function (data) { 
     // .................... 
       target_element.parent() 
    ............................... 
+0

背景:這個,應該做的!謝謝! –

1

因爲默認情況下ajax呼叫asynch,所以當你做$(this)successthis參考ajax API等$(this).parent()參考jQuery()

1

把函數調用ajax,並傳遞一個函數的元素參數?

function doAjax(triggerElement) 
{ 
    $.ajax({ 
     url: whatever, 
     context: triggerElement, 
     success : function (content) { $(this).html(content); } 
    }); 
} 

$(function() { 

    $('#triggerElementId').click(function() { doAjax(this); }); 

});