HTML:
<a href="/u"><span>Text</span></a>
<a href="/u"><span><strong>Text</strong></span></a>
<a href="/u"><span><strong>Text</strong></span></a>
<a href="/u"><span>Text</span></a>
var strong = $('span strong'),
notstrong= $('span'),
a = $('a[href^="/u"]');
for(var i=0;i<a.length;i++){
var checkIt = strong ? strong : notstrong;
$(a[i]).find(checkIt).before('<span>Hello</span>');
}
OutCome应该是:
<a href="/u"><span><span>Hello</span>Text</span></a>
<a href="/u"><span><span>Hello</span><strong>Text</strong></span></a>
<a href="/u"><span><span>Hello</span><strong>Text</strong></span></a>
<a href="/u"><span><span>Hello</span>Text</span></a>
实际收益:
<a href="/u"><span>Text</span></a>
<a href="/u"><span><span>Hello</span><strong>Text</strong></span></a>
<a href="/u"><span><span>Hello</span><strong>Text</strong></span></a>
<a href="/u"><span>Text</span></a>
由于某种原因,条件运算符没有返回我的错误语句。那或编码是错误的,就像我以前使用错误的选择器一样。真的吗?我很好奇为什么我的条件运算符不正确。我是条件运算符的新手,所以也许它总是返回true或我不确定。
最佳答案
我不太了解最终的结果,但是如果您要确定在html块的上下文中某些内容是否强大,则必须为其提供更详细的上下文。通过仅检查$('span strong')是否存在,它将始终返回true。即使您执行$('spanstrong')。length,它也会始终返回true,因为它在整个块中移动。
这是一个示例,其中强项是按行而不是按整个块进行检查。因此在这种情况下,只有当该行内部有较强的内容时,它才会返回true。
for(var i=0;i<a.length;i++){
var checkIt = $(a[i]).find(strong).length ? strong : notstrong;
$(a[i]).find(checkIt).before('<span>Hello</span>');
}
http://jsfiddle.net/S8XP4/
关于javascript - 条件运算符的假值似乎未运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18066026/