2010-03-05 49 views
2

我有这样的HTML代码:jQuery选择

<div class='com_box'> 
    <div class='com_box_c'> 
    <div class='com_box_info'> 
     <a id='quote'>quote</a> 
    </div> 
    </div> 
</div> 

当我在#报价,我想“.com_box”后添加一个文本点击。

如何选择外部div?这是我的工作没有尝试迄今:

$('a#quote').click(
    function() { 
    var com_box = $(this).parent('div.com_box'); 
    com_box.after('<textarea>....</textarea>'); 
    } 
) 

回答

1

或者:

var com_box = $(this).closest("div.com_box"); 

var com_box = $(this).parents("div.com_box:first"); 
+0

它的工作!谢谢 :) – horgen 2010-03-05 08:05:09

2

使用.closest()

更换

var com_box = $(this).parent('div.com_box'); 

var com_box = $(this).closest('div.com_box'); 


$('#quote').click(
    function() { 
    $(this).closest('div.com_box').after('<textarea>....</textarea>'); 
    } 
) 
1

我不认为$(this).parent('div.com_box')将返回任何结果,作为parent只会返回直系父母。您可能只需要$('div.com_box')(或$(this).closest('div.com_box'))。

1

使用closest().com_box不是#quote元素的直接父:

$('a#quote').click(function() { 
    var com_box = $(this).closest('div.com_box'); 
    com_box.after('<textarea>....</textarea>'); 
}); 

使用$(this).parent().parent().parent()也将工作,但是这就是closest()是。 :)

1
$('#quote').bind('click' function() { 
    $(this).parent().parent().parent().prepend('<textarea></textarea>'); 
}); 
0

var com_box = $(this).parent('div.com_box');

不会工作,但

var com_box = $(this).parents('div.com_box');

会工作!

注意使用复数词:父母。