在尝试定位特定div时,我使用以下代码:
function popupBox($area){
//$mainBox = $(document).createElement('div').attr('id', 'mainBox');
$mainBox = $('<div></div>').attr('id', 'mainBox');
$($mainBox).text('main box responding');
$parent = $('div#custom-page-node-block-output-right div.views-row').parent( $($area) );
$($parent).addClass('parent');
}
唯一的问题是有2个div,类 div#custom-page-node-block-output-right div.views-row 。 我虽然因为我正在寻找的父元素的源元素在两个div中的一个中,但我应该只得到一个元素作为响应,但它返回两者。
您可以在http://test5omniforce.co.uk/node/3查看问题(最好在Firefox中查看)。只需将鼠标悬停在任何平面图上的任何蓝色房间上。
我的想法是在鼠标悬停的任何房间的直接父母身上获得绿色背景,但我得到了两者。这显然是因为我使用的是类而不是ID,但我不能在此解决方案中使用ID。
有人建议,如果有办法通过调整我的代码来达到预期的效果吗?
由于
答案 0 :(得分:1)
你试过了吗?
$('div#custom-page-node-block-output-right div.views-row').parent( $($area) ).first();
或:
$('div#custom-page-node-block-output-right div.views-row').parent( $($area) ).last();
其中一个可能有用,但我同意John的观点,id应该是唯一的。
这是一个jsfiddle示例:http://jsfiddle.net/nxGjA/2/
答案 1 :(得分:1)
$parent = $($area).parents('div.views-row');
$parent.addClass('parent');
注意:如果元素是一个jQuery元素(就像$ parent一样,因为它是从jQuery调用返回的),你不必将它包装在 $()中。另请注意,$ area不是jQuery对象,只是传入的HTML元素。