JQuery найти детей селектор производительности - PullRequest
0 голосов
/ 12 февраля 2011

Есть ли лучший способ написать это.Я проверяю ввод текстовой области и пытаюсь найти, содержит ли он теги объекта или iframe, если нет, то установить var x = 1

if ($textareaval.find('iframe').length > 0) {
    alert('iframe')
} else if ($textareaval.find('param').length > 0) {
    alert('object')
} else {
    var x = 1;
    alert(x)

Ответы [ 3 ]

1 голос
/ 12 февраля 2011

я думаю, что даже вам не нужно проверять длину> o .. делайте так ..

if ($textareaval.has('iframe, param').length) {
   alert('iframe, param')
}else{var x=1;}
1 голос
/ 13 января 2012

Учитывая, что вы будете давать только одно предупреждение, и, следовательно, предполагая, что вы встретите только один тип, я предлагаю следующее:

    var foundItems = $textareaval.has('iframe, param');
    var alertVal = 1;
    if(foundItems.length){
       alertVal = "object";
       if(foundItems[0].tagName == "iframe")
          alertVal = "iframe";
    }
    alert(alertVal);

Это имеет преимущество только одного обхода и минимальной логики короткого замыкания, использующей наиболее распространенные свойства двух протестированных объектов. И это читабельно.

Примечание: тест foundItems.length НЕ проверяет существование, так как это свойство всегда будет существовать в коллекции javascript; но если он оценивается как 0, то это ложь, а любое другое число - нет.

0 голосов
/ 12 февраля 2011

Если вам все равно, какой из них у вас есть, вы можете объединить две проверки в одну:

if ($textareaval.has('iframe, param').length > 0) {
    x = 1;
}

Редактировать: Вы говорите, что вам все равно, поэтому, тогда нет,Ваш код в порядке, никаких улучшений не требуется.

...