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/

10-11 06:48