2009-11-03 69 views
0

你能告訴我這將是ID之間的區別:的jQuery /阿賈克斯可變混亂

var id = $(this).attr("name"); 
    var id = 1; 

的問題是,當我使用的第一個變量例如不工作

 $.ajax({ 
      type: "POST", 
      url: "http://localhost/", 
      data: dataString, 
      cache: false, 

      success: function(rating) { 
       $("span#rating-" + id).html(rating); 
      } 
     }); 

並與第二個例子它工作正常。

確定,這將是全功能的代碼:

$(function() { 

$(".vote").click(function() { 

    var id = $(this).attr("id"); 
    var name = $(this).attr("name"); 
    var dataString = 'id='+ id ; 
    var parent = $(this); 

    // var id = 1; 

    if (name=='up') { 

     $.ajax({ 
      type: "POST", 
      url: "vote.php?type=up", 
      data: dataString, 
      cache: false, 

      success: function(rating) { 
       $('span#rating-' + id).html(rating); 
      } 
     }); 
    } 
    else { 

     $.ajax({ 
      type: "POST", 
      url: "vote.php?type=down", 
      data: dataString, 
      cache: false, 

      success: function(rating) { 
       $('span#rating-' + id).html(rating); 
      } 
     }); 
    } 

    return false; 
}); 
}); 
+0

你有哪些代碼? 「this」下面是什麼? – 2009-11-03 14:02:47

+0

你能向我們展示具有「投票」類的元素的html嗎? – 2009-11-03 14:20:17

+0

謝謝,我知道了。 – krasenslavov 2009-11-03 14:24:01

回答

0

如果它不工作就意味着功能沒有運行INT正確的上下文和$(本)不會做你認爲是因爲有不同的含義。


事實上,看代碼更難,我沒有看到這個如何也可能會被任何DOM元素的範圍都沒有。回調函數可能在JQuery對象的上下文中運行,或者類似的東西。

+0

感謝您的幫助,您是對的,這是修復,這是一個醜陋的,但它現在工作。 成功:function(result){ var output = result.split(「,」) $('span#rating-'+ output [0])。html(output [1]); } – krasenslavov 2009-11-03 14:23:08

0

我的猜測是,你正在檢查的元素的name屬性不爲1,但很難說沒有問題的標記。

0

需要更多信息,但明顯的解釋是this沒有在初始化id時定義(或者沒有用你的想法定義)。無論是那個還是那個name屬性都不是你所期望的。

0

在你的問題,你已經指出:

var id = $(this).attr("name"); 
var id = 1; 

但是在你完整的代碼使用的是:

var id = $(this).attr("id"); 
var name = $(this).attr("name"); 

的完整代碼「應該」的工作,因爲你沒有你的ID和名稱屬性混淆在一起。

如果它不起作用,很可能您使用的.vote元素沒有ID。從代碼的外觀來看,也許你真的渴望.vote元素父代的id?然而,沒有提供額外的標記沒有辦法告訴。

要獲得.vote元素的父ID這將是:

var $vote = $(this); 
var $parent = $vote.parent(); 
var id = $parent.attr("id"); 
var name = $vote.attr("name"); 
var dataString = 'id='+ id ; 

注意如何我也沒有繼續使用$(本)和而存儲在一個變量返回的對象。這要快得多,因爲我們不必再讓jQuery再次找到元素。

它可能無法正常工作的另一個原因是,如果你真的想要你的投票按鈕的ID。那麼它不會工作,因爲ids可能不會被複制。例如,您必須將兩個投票按鈕之間的id重命名爲「vote-up-1」和「vote-down-1」。或者,只需將id粘貼到「title」屬性中,並將其用於帖子的id而不是id屬性。

希望有所幫助。