2014-11-25 33 views
0

我在嘗試以下操作,但這不起作用,但是想知道是否有類似的東西?在多個選擇器上設置屬性

基本上,我正在嘗試設置相同屬性的多個元素:

document.querySelectorAll("#id1, #id2, #id3").setAttribute('onclick','return false;'); 

我使用香草的Javascript,沒有圖書館。

回答

2

querySelectorAll()將返回您通過需要循環類似陣列的節點列表:

var elems = document.querySelectorAll("#id1, #id2, #id3"); 
for(var i = 0; i < elems.length; i ++){ 
    elems[i].setAttribute('onclick', 'return false'); 
} 

JSFiddle

2

這有幾種方法,最基本的一條是要遍歷集合,並添加單擊處理程序(在你的情況,你想要一個addEventHandler不是一個屬性!)

var elements = document.querySelectorAll("#id1, #id2, #id3"); 
[].forEach.call(elements, function addClickHandler(el) { 
    el.addEventListener('click', function() { return false; }); 
}; 

或許更好pproach如果你有很多元素,就在文檔上設置一個事件處理程序,並查看它是否與查詢選擇器匹配:

var elements = [].slice.call(document.querySelectorAll("#id1, #id2, #id3")); //Turn into an array 
document.addEventHandler('click', function(e) { 
    if (elements.indexOf(e.target) !== -1) { //Element in list was clicked! 
     return false; 
    } 
};