为什么jQuery $(this).text()在链接中不起作用?

时间:2009-08-18 18:13:21

标签: jquery

为什么这不起作用的任何想法?

<a href="javascript:alert($(this).text())">Alert This Text Here</a>

我期待它提醒“警告此文本在这里”,但我得到一个jQuery错误(G未定义)

我错过了什么?

4 个答案:

答案 0 :(得分:15)

我认为“this”与您点击的链接无关。它从来没有给过联想。 this不会从标记/语法中获取其关联。

以下作品:

<a href="#" onClick="alert($(this).text());">Some Text</a>

理想情况下,您希望将脚本与标记分开。你应该这样做:

$("a.someClass").click(function(event){
  event.preventDefault();
  alert($(this).text());
});

这个例子要求你的锚有一个class =“someClass”来运行。

答案 1 :(得分:2)

<a id="alert">Alert This Text Here</a>
...
$(function() {
  $("#alert").click(function() {
    alert($(this).text());
  });
});

正如上面提到的海报所说,这需要在选择器中有上下文。

答案 2 :(得分:1)

如果您使用“onclick”事件处理程序,this将可用于获取text()

答案 3 :(得分:0)

在jQuery中,$(this)通常在循环或其他选择器的上下文中引用jQuery对象。所以基本上你想在jquery中选择一个对象然后使用$(this)。

示例:

$("a").click(function(){alert($(this).text());});  

这将起作用,因为$(this)位于所选链接的上下文中。

我认为你对标准的javascript“this”引用感到困惑,它将为你提供当前的DOM对象。

这篇文章给出了一个很好的解释: http://remysharp.com/2007/04/12/jquerys-this-demystified/