我刚刚开始使用jquery。
我有3个带有.linkCol类的div,每个包含很多链接。
我一直在手动设置链接的ID,但我知道这将是一个问题。
如果你看看我到目前为止所拥有的内容,我必须手动为我的所有链接添加一个ID。
var ttlLinks = $(".linkCol li").size();
for(i=1; i<ttlLinks;i++){
$('#'+i).click(function() {
hide(this);
});
}
所以,我想选择所有链接,循环遍历它们并为每个链接分配一个单独的ID。我该如何解决这个问题? 干杯 尼尔
编辑:
您好, 我将发布我所有的jquery,以便你可以看到我要做的事情。希望它更有意义:
$(function(){
$('.txtToggle').hide(); // hide all text areas
$('#txt1').show(); //show the 1st one
var ttlLinks = $(".linkCol a").size();
for(i = 1; i&lt; = ttlLinks; i ++){ $('#'+ i).click(function(){//我手动设置每个链接ID,我希望动态完成 隐藏(本); }); }
function hide(me){
$('.txtToggle').hide(); // hide all text boxes
var id = $(me).attr('id');
var showDiv = '#txt'+ id;
$(showDiv).show(); // show the one needed
}
});
为了让这个工作,我必须给我的页面上的每个链接ID为1,2,3,4,5等,因为该值用于稍后选择正确的内容div。有没有更好的方法呢?它是一个简单的表演隐藏,但有很多东西要显示和隐藏!
答案 0 :(得分:2)
您可以使用jQuery的each
方法:
$('.linkCol li').each(function(index) {
$(this).attr('id', index)
.click(function() { ... });
});
答案 1 :(得分:1)
$('.linkCol li').click( function() {
$(this).hide();
}
现在,作为类li
的元素的子级的每个linkCol
都有click事件。
jQuery将循环遍历所有元素的隐含性。只需选择要应用.click
的所有内容并设置事件。
如果你想要其他原因的ID,你可以像下面的SLaks那样做。请注意,jQuery方法返回它们被调用的jQuery对象,因此.click()
被链接到.attr()
。但是你可能不需要ID。 .each()
将它迭代的每个元素的索引传递给它的回调,这基本上就是你的ID所做的。
如果你想要列表中的特定元素,你可以选择它们并使用.eq()
,如下所示:$('.linkCol li').eq(3)
选择集合中的第四个元素并返回一个只包含该元素的jQuery对象。如果您希望元素本身在jQuery对象上使用数组语法,例如$('.linkCol li')[3]
,它会将集合中的第四个li
作为DOM对象。
我所得到的是,在使用jQuery时,很少有必要使用与您正在使用的顺序ID。