JQuery писать если - PullRequest
       7

JQuery писать если

2 голосов
/ 21 октября 2009

У меня есть такой код:

if ($(event.target).is('.class1') || $(event.target).is('.blab') || $(event.target).is('.foo') || $(event.target).is('.cbncvbn') || $(event.target).is('.dfghdfgh') || $(event.target).is('.tryrty')) {
    // Do something
}

Есть ли более лаконичный способ написать это?

PS: я знаю, что есть лучшие способы сделать то же самое, но этот вопрос о синтаксисе условий.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 21 октября 2009

Что ж, jQuery использует селекторы CSS3, вы также можете сделать это:

if ($(event.target).is('.class1, .blab, .foo, .cbncvbn, .dfghdfgh, .tryrty')) {
    // Do something
}

Совпадение применимо к любому, как и с правилами CSS

2 голосов
/ 21 октября 2009

Теоретически hasClass будет наиболее подходящим способом проверить, имеет ли элемент заданное имя класса. Однако сам jQuery реализует hasClass так:

this.is( "." + selector )

, который не только является тем же самым кодом в конце, но и плохо работает, если у вас есть имя класса, содержащее пунктуацию со значением в селекторах. Bad jQuery, без торта!

Так что я бы придерживался ответа Паоло. Если производительность является проблемой, скорость может быть улучшена с помощью простого JavaScript, чтобы разделить список className только один раз. Но, вероятно, это не имеет значения в этом случае.

...