你如何使用jquery获得对外部div的引用

时间:2010-05-13 10:07:34

标签: jquery jquery-selectors

如果我有这个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' />");
    });
});

有没有人对这里出了什么问题有任何想法?

3 个答案:

答案 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' />");
        }
});​