0

好的,我想为页面上的第二个 div 设置边距

$('div#superid:nth-child(2)').css('margin-left', '10px');

一切正常,我已经达到了目标。但是,我希望仅当此 div 包含至少一个名为 superchild 的输入收音机时才应用该规则。因此,上述规则应适用于:

<div id="superid">
   <div>some text
   </div>
   <div>
    <input type="radio"  name="superchild" value="2010">
    <input type="radio"  name="superchild" value="2010">
   </div>
</div>

因为它至少有一个输入收音机,name="superchild" 最好的方法是什么?

4

2 回答 2

1
var div = $('div#superid:nth-child(2)');
if (div.find('input[name="superchild"]').length) {
    div.css('margin-left', '10px');
}
于 2012-11-22T13:28:35.230 回答
1

您也可以使用过滤器方法。下面的脚本选择div中的每一个#superid-div,其中至少有一个类型为 radio 和名称 superchild 的输入字段。然后它将所需的 css 添加到选定的 div 中。

$('div#superid > div').filter( function(index,elem) {
    return $(this).find('input[type=radio][name=superchild]').length > 0;
}).css('margin-left', '10px');

jsFiddle

如果您只想将此样式添加到第二个 div,请改用您的选择器。但我认为我的脚本更好地涵盖了所需的行为。

于 2012-11-22T13:29:47.873 回答