使用jquery动态设置递增的链接ID?

时间:2010-07-13 16:14:53

标签: jquery

我刚刚开始使用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。有没有更好的方法呢?它是一个简单的表演隐藏,但有很多东西要显示和隐藏!

2 个答案:

答案 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。