2012-05-09 74 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的字符串。如果已经有对象引用,则直接使用变量值。