2013-09-25 42 views
1

我想查找具有以foo開頭的類並將事件偵聽器附加到它們的元素。獲取以「foo」開頭的類並將事件附加到它們的元素

這顯然工作$$('li[class^=foo]')但只有當foo是該元素的第一個類。所以我去了$$('li').hasClass([class^=foo]);

這工作,但現在我想用... class^=foo]).addEvent(...,那沒有奏效。
Object [object Array] has no method 'addEvent' - Fiddle

$$('li').hasClass([class^=foo]).each(function (el) { 
    el.addEvent('mouseenter', function() { 
    //... 

嘗試,但沒有sucess - Fiddle

我缺少什麼?

回答

3

好吧。你可以做幾件事。

var li_elms = $$('li[class*=foo]'); 

將正常工作,但它也將包括blahfoo

你可以過濾:

var li_elms = $$('li').filter(function(el){ 
    return el.get('class').indexOf('foo') !== -1; 
}); 

你也可以委託事件父UL和檢查,如果匹配EL應考慮在射擊時。

+0

謝謝你檢查我的問題! '.filter()'也是一個好主意。無論如何,我可以用'.hasClass([class^= foo])'獲得「right」對象數組。問題是我不能'addEvent'元素。我想過'.each()',但遇到錯誤 - > jsfiddle.net/PxPpk/1 – Rikard

+1

您可以添加事件。 http://jsfiddle.net/dimitar/PxPpk/2/的作品。你不能在'.hasClass'上添加事件,因爲mootools迭代器會爲你做一個'.map',並返回一個如下的數組:'[true,true,true,false]' 。 –

相關問題