jquery目标多个标题属性

时间:2013-01-29 01:22:40

标签: javascript jquery

我有以下代码可以正常工作。

    <div id="testdiv"></div>
    <table>
        <tr>
            <td class="test" title="two">2</td>
            <td class="test" title="one">1</td>
            <td class="test" title="three">3</td>
        </tr>
    </table>

    <script>
        if(jQuery("td[title='three']").length == 0) {
          jQuery('#testdiv').append('<p>no td</p>')
        }
        else
        {
          jQuery('#testdiv').append('<p>yes td</p>')
        }
    </script>

但是我想说是否存在一个或三个标题。所以我尝试编辑脚本的第一行看起来像这样。

if(jQuery("td[title='three']").length == 0 || jQuery("td[title='one']").length == 0) {

但由于某种原因,似乎三个人和一个人都需要在那里才能使我的陈述成为现实?

但是如果我替换了||与&amp;&amp;它的工作方式我想要它吗?为什么&amp;&amp;&amp;像||一样工作在这还是我在这里遗漏了什么?

例如

See fiddle

2 个答案:

答案 0 :(得分:2)

||表示“包容性或”。使用||时,如果title=three不存在 title=one不存在,则显示no td。也就是说,如果一个存在,它仍然会说no td。如果您按照自己的方式使用||,则两者都需要存在。如果你改变条件,我认为你可能会更有意义:

    if(jQuery("td[title='three']").length > 0
       || jQuery("td[title='one']".length > 0
    ) {
      jQuery('#testdiv').append('<p>yes td</p>')
    }
    else
    {
      jQuery('#testdiv').append('<p>no td</p>')
    }

答案 1 :(得分:2)

||为OR,&&为AND,因此如果您需要两个条件,则必须使用&&,但您可以将其设为有点短。我方便使用$,但您可以使用jQuery替代:

var exists = $('td[title=one],td[title=three]').length;
$('#testdiv').append('<p>'+ (exists ? 'yes' : 'no') +' td</p>');