如果我有这个HTML
<div class="whole">This is a <div class="min">Test</div></div>
当我点击“min”div时,我想更改“整个”div的html:
我在下面尝试了这个,但它似乎不起作用。
$(document).ready(function() {
$('div.min').live('click', function() {
$(this).prev('.whole').html("<img BORDER=0 src='../../images/copy1.png' />");
});
});
有没有人对这里出了什么问题有任何想法?
答案 0 :(得分:7)
您需要parent
,而不是prev
。您的div.min
位于div.whole
内,而不在$(document).ready(function() {
$('div.min').live('click', function() {
$(this).parent('.whole').html("<img BORDER=0 src='../../images/copy1.png' />");
});
});
旁边。所以:
live
2017年更新:on
已弃用多年,最终被删除。它在上面使用,因为它在OP的原始代码中并不是问题,但为了完整性,目前的方法是使用$(document).on('click', 'div.min', function() {
$(this).parent('.whole').html("<img BORDER=0 src='../../images/copy1.png' />");
});
的委托签名:
ready
请注意,我们甚至不需要document
,因为这是在live
上进行事件委派,所以它不必等待。 (对于上面的{{1}}版本也是如此。)
答案 1 :(得分:3)
.prev()
将选择前一个兄弟,即同一级别时当前元素之前的元素。
您正在寻找 .parent()
。
E.g。
<div id="parent">
<div id="first"></div>
<div id="second"></div>
</div>
$('#second').prev()
将选择#first
。$('#second').parent()
将选择#parent
。$('#first').next()
将选择#second
。答案 2 :(得分:-1)
另一种方法是执行此操作
$('div.min').click(function(event){
if ($(event.target).is('div.min')){
$('div.whole').html("<img BORDER=0 src='../../images/copy1.png' />");
}
});