2012-05-09 77 views
0

我是新來的jQuery和試圖使一個http請求,讓我不必離開當前頁面,但是jQuery的道具()返回undefined

var getURL = $("#callerId").attr("href"); 

似乎並不奏效 執行console.log(使用getURL)顯示 「未定義」

有源代碼(都記錄下來,以CALLERID應該是正確的)

​​
+4

'#callerId'在哪裏? –

回答

2

您需要使用

var getURL = $(this).attr("href"); 

代替

var getURL = $("#callerId").attr("href"); 

在第一種情況下$(this)指向剛點擊,在第二錨的jQuery對象 - 它指出了一些元素甚至不是你的榜樣覆蓋

活生生的例子:http://jsfiddle.net/zerkms/YJRLR/

+1

做這種傻事$(this).attr(「href」);''當this.href'更短更快。 jQuery應該只在它是一種更好的方式來使用時才能使用。 – jfriend00

+0

@ jfriend00:確實,但從另一個角度看--OP現在知道'$(this)'存在 – zerkms

+0

我只是想你應該永遠不要教一個新手做錯事的方法。你可以向他們展示如何使用'this.href'和如何使用'$(this)'就像我在我的答案中所做的那樣。 – jfriend00

1

我覺得你的意思是這樣做的:

<script type = "text/javascript"> 

$(document).ready(function() { 
    $('ul.hrefURL a').click(function(e) { 
     e.preventDefault(); 
     var getURL = this.href; 
     $.ajax({ 
      type : "GET", 
      url: getURL, 
      success: function(response){ 
       alert($('#response')); 
      } 
     }); 

    }); 
}); 

</script> 

需要了解的就是你以前的代碼:

  1. this將被自動設置爲引起該事件,所以你不必獲得target.id的對象。
  2. 您可以通過this.href獲取href的值。沒有必要爲此使用jQuery。
  3. 如果您想將this的值設置爲jQuery對象,您可以使用$(this)$(e.target.id)來完成。當它是一個CSS選擇器時,您可以使用帶有jQuery的字符串。如果已經有對象引用,則直接使用變量值。