2010-07-25 69 views
1

的HTML:jQuery的變量的問題

<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> 

的Jquery:

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

我想在jQuery代碼來代替 「第一」 採用div VAR 「測試」 的內容之上。 喜歡的東西:

$("."+test).html('<img src="img/spin.gif">'); 

但是,當我在功能上把這部分代碼上面這是行不通的。我做錯了什麼?

回答

6

你得到的ID,但其選擇爲.class selector(所以應該$("#"+test)),但它可以更容易,就像這樣:

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

沒有必要再去選擇的元素,你已經擁有了它,所以只是你發現.closest()作品的元素調用.html(),簡單和快速:)


爲了完整起見,雖然,你應該做的是這樣的:

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

使用.empty()通話將清理click處理我們在,否則it'l圍繞留在$.cache ......這不是一個大問題,但如果你有很多它加起來的元素,最好總是在可能的情況下進行清理。

1

你把id值放到測試中,但是你用'。'在選擇器中。相反,你應該使用'#'。