2011-07-19 82 views
0

我想用一种我认为可以工作的简短符号来检测一个元素直接的兄弟姐妹。以下是我的代码:JQuery兄弟缩写

$menuContainer = $('<div></div>').attr('id', 'menuContainer').attr('class', 'menu-container'); //.hide(); 
$menuContainerInner = $('<div></div>').attr('class', 'container-inner'); 
$menuContainer.append($menuContainerInner); 
$menuContainer.insertAfter($('div#block-views-Menu-block_1')); 
$($menuContainer + ' > div.container-inner').css('background', 'red'); 

在上面的代码中,我动态地创建2个div并将它们分配给变量供后面的引用使用。 我在第一个嵌入第二个div。

因此,使用$($menuContainer + ' > div.container-inner').css('background', 'red');我试图找到并更改内部div的背景颜色,而不使用正常的div-id路径。

是不是有一些这样做或我误认为?

回答

1

$menuContainer是一个对象,您将隐式调用toString,这可能不是您想要的。

我会使用children代替:

$menuContainer.children('div.container-inner').css('background', 'red'); 

但是,如果你是这样的(分开传递对象为根)也适用:

$('> div.container-inner', $menuContainer).css('background', 'red'); 

Gratuitous live example

1

“$ MenuContainer中“似乎是一个jQuery的对象,而不是一个字符串,我相信你想要的是:

$ menuContainer.children('。container-inner');

1

尝试使用所述选择的上下文:

$('div.container-inner', $menuContainer).css('background', 'red');