我需要使用类“tdresult”为表中的锚元素设置唯一的数字rel属性。我试图在循环中设置它们,但我不是很擅长Javascript,可能不会取消不良循环。
$$('.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
});
});
有人可以告诉我怎么做吗?
答案 0 :(得分: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 :(得分:1)
我不是百分百肯定我明白你在做什么,但看起来像你一样:
a
元素中的每个.tdresult
元素rel
属性添加唯一值
rel
属性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++;
});
虽然我有可能误解了这个任务。
答案 2 :(得分:1)
这在mootools中要容易得多,因为每个都给你一个计数器,并且你在每个循环的闭包中你需要存储id。查看mooShell(激活控制台)
$$('td a').each(function(el, uId){
el.addEvent('mouseenter', function() {
infoGet(1, uId);
});
});