2010-11-25 90 views
2

每當點擊一個投票按鈕時,我正在加載一個ajax-loader gif。但圖像顯示所有項目。我正試圖找出如何爲投票的項目加載圖片。這是我的代碼。jquery爲單個元素添加html()

$(document).ready(function(){ 
    $(".vote").click(function(e) { 
     $('.ajax_load').html('<img src="/images/ajax-loader.gif" />'); 
     var item_id = $(this).attr("id"); 
     var dataString = 'item_id=' + item_id; 

    $.ajax({ 
     type: "POST", 
     url: "vote.php", 
     data: dataString, 
     cache: false, 
     success: function(html) { 
    $('.ajax_load').html('Voted!'); 
     } 
    }); 
    return false; 
}); 
}); 

HTML樣品

<div class="vote" id=88">Vote</div> <div class="ajax_load"> 
<div class="vote" id=92">Vote</div> <div class="ajax_load"> 
<div class="vote" id=38">Vote</div> <div class="ajax_load"> 
+0

是否有很多類`ajax_load`?如果是這樣,我們將需要看到一些HTML(*結構*),所以我們可以看到如何過濾到特定的項目..(*還,爲什麼你使用投票標籤選擇器?似乎無效*) – 2010-11-25 21:02:48

+0

你能提供一個HTML的樣本,所以我們可以確定你使用的是什麼html。 – 2010-11-25 21:03:28

+0

很抱歉!添加 – Rambo 2010-11-25 21:15:54

回答

2

從HTML樣品,它看起來像元素是同級的,所以你應該使用

$(this).nextAll('.ajax_load:first').html('<img src="/images/ajax-loader.gif" />'); 

顯示圖像。

在成功回調

使用

$('#' + item_id).nextAll('.ajax_load:first').html('Voted!'); 

爲目標的具體表決元素。

0

嘗試

$("vote").click(function(e) { 
    $(this).html(...); 
0

假設.ajax_load是投一個孩子,那麼你可以改變這一點:

$('.ajax_load').html('<img src="/images/ajax-loader.gif" />'); 

到:

$(this).find('.ajax_load').html('<img src="/images/ajax-loader.gif" />'); 

這隻會影響.ajax_load這是被點擊的投票的孩子,而不是所有的人。

在你的ajax調用中也是如此。我認爲$(this)仍然應該指的是點擊「投票」。

$('.ajax_load').html('Voted!'); 

變爲...

$(this).find('.ajax_load').html('Voted!'); 

編輯好了,因爲HTML,有幾個方法可以做到這一點。我可能會做這種方式:

$(this).next('.ajax_load:first')... <- do whatever you'll do with the selection. 

一般來說,如果你想弄清楚如何使用jQuery選擇一個div,一個偉大的地方看是traversingselecting jQuery的文檔。