2015-05-13 64 views
0

HTML:jQuery的選擇每次都第一個元素

<div class="vote" id="<?php echo $id; ?>"> 

的jQuery:

$('.vote').on('click', function() { 
    var div = $(".vote").attr('id'); 
    $.ajax({ 
     type: "POST", 
     url: "vote.php", 
     data: { 
      id: $(".vote").attr('id') 
     }, 
     success: function(data) { 
      alert(div); 
     } 
    }); 
}); 

這個工程,div變種,它總是第一個元素 - 和運行兩次(兩個div與vote類) 。

我也使用AJAX來顯示結果(div與vote類)。

爲什麼會發生這種情況,我該如何解決?

回答

0

您需要使用this,它指的是調用該元素的元素。

var div = $(this).attr('id'); //this.id; 

當您使用$(".vote").attr('id')它會始終返回您的第一個元素的ID。

正如您使用id來存儲自定義數據。我會建議你使用可以通過使用.data()

<div class="vote" data-id="<?php echo $id; ?>"> 

中獲取data-*前綴自定義屬性然後你可以使用

var id = $(this).data('id'); 
0

您需要使用當前的元素點擊背景this

var div = this.id; 
0

使用this.id而不是$('.vote').attr('id'),因爲javascript會得到第一個id h Ë開創如果使用$('.vote').attr('id')

+1

有沒有像'$(本).attr(' ID') '在OP的代碼中! –

0

替換您$爲$(本)這樣的下面( '投票 '):

$('.vote').on('click', function() { 
    var div = $(this).attr('id'); 
    $.ajax({ 
     type: "POST", 
     url: "vote.php", 
     data: { 
      id: $(this).attr('id') 
     }, 
     success: function(data) { 
      alert(div); 
     } 
    }); 
}); 
相關問題