2013-10-09 50 views
1

我是jQuery的新手,並創建了一些代碼片段來檢查是否有任何(即一個或多個)以下ID在窗體上可見。檢查類或名稱而不是ID(簡單代碼)

該代碼工作正常,但我想知道如果我可以通過檢查一個類或名稱,我可以分配給每個ID,以便它也可以處理更多的ID,我不必分別提及他們每個人。

有人可以幫助我,並告訴我如何正確書寫。

我的代碼(工作):

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'); 
}