我的if else语句的基本思想是:
.wrap
是父元素:执行某些操作这可能没什么意义,但是如果你看一下这里的代码: http://jsfiddle.net/C6NQM/ ..可能
if( $('.wrap:parent'); )
{ $('.wrap').children().wrap('<div class="new" />'); }
else { $('.wrap').wrap('<div class="new" />'); }
如果我删除if和else,事情会分开工作,所以我得出的结论是我的if条件有问题。
关于这里有什么问题的任何想法?
答案 0 :(得分:4)
我想你想要:
$('.wrap').each(function() {
if($(this).children().length > 0) {
$(this).children().wrap('<div class="new" />');
}
else {
$(this).wrap('<div class="new" />');
}
});
对您的代码的评论:
if( $('.wrap:parent'))
始终评估为true
。对jQuery的调用总是返回一个jQuery对象。您可以执行if( $('.wrap:parent').length > 0)
,但即使这样,您也会选择示例中的所有元素,因为:parent
也会选择将文本节点作为子节点的节点。
但即便如此,整个语句的工作方式如下:如果有任何.wrap
元素是父元素,请将子元素包装在新元素中。如果没有,请自行包裹元素
因此,它不会单独处理每个.wrap
元素。
更新:要涵盖所有案例(儿童,文字内容,空白),您可能需要这样做:
$('.wrap').each(function() {
if($(this).children().length > 0) {
$(this).children().wrap('<div class="new" />');
}
else if($(this).text().length > 0) {
$(this).html('<div class="new">' + $(this).text() + '</div>');
}
else {
$(this).wrap('<div class="new" />');
}
});
答案 1 :(得分:0)
我试过,如果你删除';'你的代码就可以了在if条件下。
更新
PS:如果你使用jfiddle.net,javascript中的一般错误也会在FireFox和Safari的错误控制台中打印出来。