2013-10-09 2 views
1

Я новичок в jQuery и создал небольшой фрагмент кода, чтобы проверить, есть ли какой-либо вид (например один или несколько) следующих идентификаторов в форме.Проверьте класс или имя вместо идентификатора (простой код)

Код работает нормально, но мне было интересно, могу ли я достичь того же путем проверки класса или имени, которое я мог бы присвоить каждому идентификатору, чтобы он мог обрабатывать больше идентификаторов, и мне не нужно упоминать каждый из них отдельно ,

Может кто-то здесь помочь мне с этим и рассказать мне, как правильно его написать.

Мой код (рабочий):

if(($('#fail1').is(':visible')) || ($('#fail2').is(':visible')) || ($('#fail3').is(':visible'))) 
{ 
    // do something; 
} 

ответ

3

Это именно тот тип поведения класс предназначен для - дублирование логики над множеством элементов , В jQuery можно использовать селектор атрибутов id, хотя они относительно медленны и должны использоваться в качестве последнего средства.

Все, что вам нужно сделать, это дать класс для ваших элементов и изменить свой код так:

if ($('.fail').is(':visible')) { 
    alert('at least one element is visible'); 
} 

Example fiddle

+0

Собирался написать это точное решение, +1 – Ruudt

+0

Это работает отлично, и я получил логику. Большое спасибо за быстрый ответ! – user2571510

+0

Без проблем, рад помочь. –

2
if($("[id^='fail']").is(':visible')) 
{ 
    // do something; 
} 

ссылка attribute-starts-with-selector

+0

Спасибо за быстрый ответ. Это тоже хорошо работает - я просто пошел на вариант выше. – user2571510

0

Для записи, Jquery не требуется, чтобы сделать это:

if (Array.prototype.some.call(document.querySelectorAll('.fail'), function (n) { 
     return (window.getComputedStyle(n).display !== 'none'); 
    })) { 
    console.log('at least one element is visible'); 
} 
Смежные вопросы