尝试让这段代码正常工作,但我在firebug中遇到的错误是$this is not defined
,我不明白为什么
为了解释有关此代码的背景,我有一个具有相同类的跨度列表,因此当我单击特定跨度时,我需要发送ajax请求并更新该特定跨度。
希望这是有道理的。
$(document).ready(function() {
function postAndFade($node, post_key) {
var id = $node.parents('.id').find('.id-value').text();
var post_val = $node.text();
$node.fadeOut('slow');
$.ajax({
type: "POST",
url: "process.php",
data: "id="+id+"&"+post_key+"="+post_val,
success: function(data) {
$node.html(data);
$node.fadeIn('slow');
}
});
return false;
}
$('.featured-value').click(function() { return postAndFade($this, 'featured'); });
$('.visible-value').click(function() { return postAndFade($this, 'visible'); });
});
答案 0 :(得分:15)
因为它不是 - 你正在寻找$(this)
。
富勒解释 - jQuery通过将this
的值设置为触发事件的元素来设置事件处理程序的上下文。为了在jQuery中引用它,你需要将它包装在jQuery调用中,如下所示:$(this)
。因为你经常需要使用该元素做很多事情,所以将它分配给名为$this
的变量是一种常见的编码模式:
$(el).click(function() {
var $this = $(this);
// now do stuff with $this
});
但这是一个惯例,而不是jQuery为你做的事情。
答案 1 :(得分:4)
使用此代码
$(this) instead of $this
答案 2 :(得分:2)
您需要$(this)
,而不是$this
。
答案 3 :(得分:2)
你想要
$('.featured-value').click(function() { return postAndFade($(this), 'featured'); });
$('.visible-value').click(function() { return postAndFade($(this), 'visible'); });
this
是对DOM元素的引用。
$this
不是任何东西,它有时像这样使用:var $this = $(this)
以保存jQuery对象,因此您不会多次重新创建它。
答案 4 :(得分:2)
尝试使用$(this)而不是$ this
$('.featured-value').click(function() { return postAndFade($(this), 'featured'); });
$('.visible-value').click(function() { return postAndFade($(this), 'visible'); });