0

私は正常に動作する以下のコードを持っています。

    <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>

ただし、タイトル1または3のいずれかが存在するかどうかを言いたい. そこで、スクリプトの最初の行を次のように編集してみました。

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

しかし、どういうわけか、私の発言が真実であるためには、3 と 1 の両方が必要なように思えますか?

しかし、 || を置き換えると && を使用すると、希望どおりに機能しますか? && が || のように機能するのはなぜですか? ここで、またはここで何か不足していますか?

たとえば、フィドルを参照してください

4

2 に答える 2

2

||は OR、&&は AND なので、両方の条件を満たす必要がある場合は を使用する必要&&がありますが、これを少し短くすることもできます。$便宜上使用していますが、次のように置き換えることができjQueryます。

var exists = $('td[title=one],td[title=three]').length;
$('#testdiv').append('<p>'+ (exists ? 'yes' : 'no') +' td</p>');
于 2013-01-29T01:29:32.867 に答える
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>')
    }
于 2013-01-29T01:26:42.307 に答える