Вы ищете тело то не имеет какого-либо из классов, так что вам нужно использовать &&
. Вот что происходит:
if(hasclass(a) || hasclass(b))
= if(true OR false)
= if(true)
Над оператором ИЛИ ||
означает, что как только он попадает в настоящую оценку, он будет выполнять свой if
-блок.
if(hasclass(a) && hasclass(b))
= if(true AND false)
= if(false)
Здесь оператор И &&
означает, что как только вы нажмете false
оценки, вы блокируете не будет выполнена.
Вы хотите, чтобы последнее произошло, поскольку вы хотите, чтобы у него не было ни одного из классов. Узнайте, как играть с этими операторами, поскольку они могут быть очень запутанными. Пока вы помните, что оператор И будет выполняться только в том случае, если все утверждения истинны, и оператор OR будет выполняться только в том случае, если одно из операторов истинно. Вложенные операторы работают одинаково, поэтому if((a = b && b = c) || (a = c))
будет выполняться, если a, b и c являются одинаковыми OR, когда a и c являются одинаковыми, но не тогда, когда a и b одинаковы или a и c одинаковы.
Подробнее о выражении и операторов (в частности побитовое и должен прочитать): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise_operators
немедленным помощь пришла мне в голову: попробуйте писать код внутри $ (document) .ready (function() {// здесь}); не уверен, что это так. Поделитесь своим кодом через jsFiddle. посмотрите на это: http://jsfiddle.net/codeSpy/3yo670b1/, ваш код работает отлично. –
На самом деле это не работает, посмотрите на это: http://jsfiddle.net/orjan/cmx3fa3z/ – OBD
Вы сказали, что ваш код будет выполняться, если ни один из классов a, b, c, d не присутствует. Поэтому попробуйте следующее: http://jsfiddle.net/codeSpy/p5e67dw0/ –