2011-07-08 80 views
6

我有一大堆嵌套div標籤內的按鈕在我的HTMLHTML插入DIV使用JQuery

<div class="button-wrapper"> 
    <button class="button-class">Click here</button> 
</div> 
<div class="button-wrapper"> 
    <button class="button-class">Click here</button> 
</div> 
... 

點擊使用JQuery一些數據按鈕職位,並通過阿賈克斯成功函數返回一些HTML 。我試圖替換每個按鈕被點擊的div的內容,但由於某種原因,我的JQuery選擇器似乎沒有工作。

我想我的成功函數中執行以下操作:

$(this).parent().html(data); 

我知道數據被髮布成功,並且成功的功能正在工作。什麼奇怪的是,下面的工作:

$(".button-wrapper").html(data); 

,但顯然這增加了HTML每格,不只是一個被點擊的按鈕。

有誰知道我可能是錯的怎麼回事?

+1

看起來這不過應該工作,我以爲你是範圍有關的問題,我們不能告訴,除非你張貼整個阿賈克斯功能,請張貼功能全部 –

+1

這聽起來像關鍵字的另一個問題'this'。你可以發佈插入作業的腳本讓我們看看嗎?沒有看看它,我們不能說太多。 – shinkou

回答

10

在jQuery的「本」是常用的回調之內覆蓋。解決方法是使用另一個變量引用此:

var _this = this; //or var $_this = this; 
$(_this).parent().html(data); 
+0

像一個魅力工作,謝謝! –

0

我建議使用螢火蟲來調整您的選擇器。

除此之外,你能不能設置唯一的ID給每個單嗎?

+0

感謝@Nico,我可以設置唯一的ID,但我希望不必這樣做,結果證明我沒有! –

3

的問題是,在你的回調this不是按鈕了。試試這個:

$(".button-wrapper").click(function(){ 
    var that=this; 
    $.ajax(
     // ... 
     success: function(data){ 
     $(that).parent().html(data); 
     } 
    ); 
}); 
+0

+ 1謝謝,這個作品很棒!有幾個類似的答案,所以剛剛發佈的第一個答案。 –

0

HTML:

<div class="button-wrapper"> 
    <button class="button-class">Click here</button> 
</div> 
<div class="button-wrapper"> 
    <button class="button-class">Click here</button> 
</div> 

JS:

$.ajax({ 
//.. 
     success: function(){ 
     $(".button-class").click(function(){ 
      $(this).parent().html("Dynamic Html"); 
     }); 
     } 
    }); 
+0

謝謝@ kmb385,但只是我試了一下,它實際上沒有工作。 –

0

你應該知道,你需要加載成功的功能,例如日誌:setInterval(myFunction,2500);

4

這將樂於助人的你....

$("button").click(function(){ 
    $("div").html("Hello <b>world</b>!"); 
}); 
+0

問題是關於在jQuery回調中引用正確的'this'。這個答案是無關的(除了你的朋友串行upvote)-1 –