Jquery变量问题

Ser*_*gio 1 jquery

HTML:

<div class="first" id="first_id">
<div class="second">text sample</div>
<div class="third"><button type="submit" class="some_class" id="some_id">send</button></div>
</div>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$("#some_id").click(function() {
var test = $(this).closest('.first').attr('id');
..
return false;
});
Run Code Online (Sandbox Code Playgroud)

我想在上面的jquery代码中使用var"test"替换"first"div的内容.就像是:

$("."+test).html('<img src="img/spin.gif">');
Run Code Online (Sandbox Code Playgroud)

但是,当我将这部分代码放在上面的函数中时,它不起作用.我做错了什么?

Nic*_*ver 6

您正在获取ID,但选择它作为.class选择器(所以它应该是$("#"+test)),但它可以更容易,如下所示:

$("#some_id").click(function() {
  $(this).closest('.first').html('<img src="img/spin.gif">');
  return false;
});
Run Code Online (Sandbox Code Playgroud)

没有必要再次选择元素,你已经拥有它,所以只需调用.html()你找到的元素就可以了.closest(),更简单,更快捷:)


为了完整起见,你应该做的是:

$("#some_id").click(function() {
  $(this).closest('.first').empty().append('<img src="img/spin.gif">');
  return false;
});
Run Code Online (Sandbox Code Playgroud)

使用一个.empty()调用将清理click我们所处理的处理程序,否则它将被留在$.cache...这不是一个大问题,但如果你有很多元素,它会加起来,如果可能的话,最好总是清理.