2009-10-27 69 views
0

我需要爲表中類別爲「tdresult」的錨元素設置唯一的數字rel屬性。我試圖設置它們在循環中,但我不是很擅長Javascript,並且可能不會出現循環。如何使用Mootools設置循環中元素的唯一ID?

$$('.tdresult').each(function(chooseClass) { 
    var ellen=chooseClass.getElements('a').length; 
    var eli=chooseClass.getElements('a').each(function(el){ 
    for (i=0; i<ellen; i++){ 
    var elic=el.set('rel',i++); //trying to set numeric ids for anchor els (from 0 to //max (ellen) 
    } 
    }); 
    chooseClass.addEvent('mouseenter', function(el) { 
    infoGet(1,uniqueid); // function that sets the ajax request using unique id from loop 
     }); 
}); 

誰能告訴我如何做到這一點?

回答

1

這應該做你想要什麼,如果我理解正確的問題

var offset = 0; 
$$('.tdresult').each(function(chooseClass) { 
chooseClass.getElements('a').each(function(el){ 
     el.set('rel',offset); 
     el.addEvent('mouseenter', function(uniqueid) { 
     return function() { 
      infoGet(1,uniqueid); 
     } 
     }(offset)); 
     offset++ 
}); 

}); 

offset遞增與循環,但被宣告它的外面。每次循環運行時,都會增加相同的變量offset。以前那裏的循環沒有必要。

雖然有一個問題......你爲什麼要設置rel屬性爲一個數字?有關有效值的列表,請參閱http://www.w3schools.com/TAGS/att_a_rel.asp。還要注意,主流瀏覽器都沒有使用這個屬性。 (史詩失敗就爲大家對標準的支持)

編輯

我注意到你試圖與事件監聽器做。我修改了代碼來將當前偏移量存儲到事件處理函數的閉包中。事件處理函數中的函數立即以當前的offset運行。在函數內部,這被稱爲uniqueid。該函數然後返回實際事件處理函數,但保持使用uniqueid變量(不是偏移量,但調用外部函數時的偏移量值)。

1

我不是100%肯定我明白你在做什麼,但它看起來你:

  1. 查找每個.tdresult元素
  2. 加入了獨特的價值,裏面每a元素所述rel屬性到每個
  3. 添加MouseEnter事件到每個它使用rel屬性

如果要存儲一個獨特的價值,嘗試storeretrieve

var unique_id = 0; 
$$('.tdresult a').each(function(el){ 
    el.store('unique_id',unique_id); 
    el.addEvent('mouseenter', function(evt) { 
     infoGet(1,this.retrieve('unique_id')); 
    });  
    unique_id++; 
}); 

雖然它可能我誤解了任務。

1

這在mootools中更容易,因爲每個給你一個計數器,並且在你不需要存儲id的每個循環的閉包中。查覈在(激活控制檯)

$$('td a').each(function(el, uId){ 
     el.addEvent('mouseenter', function() { 
       infoGet(1, uId); 
     });  
}); 
+0

$$( 'tdresult A ')。每個(函數(EL,UID){ el.addEvent(' 的mouseenter',函數(){ infoGet(1 ,uId + 1); }); }); //這個很好,但我需要在所有td區域設置鼠標懸停,而不僅僅是爲了它的孩子(a) – moogeek 2009-10-28 08:25:01

+0

要是你需要一個特定的ID或更糟。 – 2009-10-28 08:37:36

+0

要爲ajax所要求的元素設置特定的id非常困難,因爲它們超過9000個:(但無論如何,非常感謝你!我已經解決了我的問題50% – moogeek 2009-10-28 09:55:44

相關問題