jQuery使用each() - 问题循环遍历类

时间:2011-09-23 16:53:39

标签: jquery each

我使用此代码循环遍历每个“.accessoryrow”,然后选择“dialog”+ counter和“.see-details”+ counter。所以第一次循环时它会选择dialog1类并看see-details1类;第二次对话框2,请参阅详细信息2,依此类推。我想我没有正确地向选择器添加计数器。请指正。谢谢

CODE:

  var counter = 1;
        $(function () {
        $(".accessoryrow").each(function() {
            $(".dialog" + counter).dialog({
                autoOpen: false,
                show: "blind",
                hide: "fade"
            });

            $(".see-details" + counter).click(function () {
                $(".dialog" + counter).dialog("open");
                return false;
            });
            counter++;
        });

2 个答案:

答案 0 :(得分:1)

问题是在点击链接之前不会评估$(".dialog" + counter).dialog("open");行。因此,它使用的counter值是当前。更好的方法是完全取出计数器,并使用jQuery选择器来选择正确的.dialog。

没有HTML,我不能说它应该是什么样子,但你会希望点击功能看起来像是

 $(".see-details").click(function () {
        $(this).sibling(".dialog").dialog("open");
        return false;
    });

当然,假设.dialog元素实际上是.see-details的兄弟。如果不是,你将需要更多地遍历树。

答案 1 :(得分:0)

试试这个(未经测试):

$(function () {
    $(".accessoryrow").each(function(index) {
        $(".dialog" + (index + 1)).dialog({
            autoOpen: false,
            show: "blind",
            hide: "fade"
        });

        $(".see-details" + (index + 1)).click(function () {
            $(".dialog" + (index + 1)).dialog("open");
            return false;
        });
    });

索引将循环编号传递给函数。它从0开始,我认为你需要它从1开始,所以我在每个使用它的地方加了1。