如何在Jquery中停止$ .each循环?

时间:2017-03-23 21:58:19

标签: jquery

我从JSON数组中为用户填写数据。这是我所遇到的问题的模拟。

当我点击1号按钮时,它会越过每个循环4次。按钮2,3次等。

有没有办法停止$ .each循环。我认为return false;应该这样做,但它似乎没有帮助。查看jsfiddle以查看它的实际效果。

HTML

<div id="add_more_asset_numbers_edit" /></div>

Jquery的

var arr = [
       '1',  
       '2',   
       '3',   
       '4'

    ];

    $.each(arr, function (index, value) {
      // alert(value);
        $("#add_more_asset_numbers_edit").append("<input type='text' name='' value='"+ value+"' id='input_"+ value+"' disabled /><button type='button' id='"+ value+"_"+ value+"_1' class='btn btn-warning edit_more_assets'>Edit</button><button type='button' id='"+ value+"_"+ value+"' class='btn btn-danger remove_more_assets'>Remove</button><br id='"+ value+"_2'>");

        $(".edit_more_assets").on("click", function(){
            var id1 = $(this).prop("id");
            alert(id1);
            return false;

        });
        $(".remove_more_assets").on("click", function(){
                var id1 = $(this).prop("id");
                alert(id1)
                return false;
        });
    });

Only horizontal scroll active. Widgets adjusted.

3 个答案:

答案 0 :(得分:3)

我认为您对嵌套函数感到困惑。这里return的唯一两个用途是在你的两个click处理程序中。问题是点击处理程序中的代码实际上并没有运行,直到有人点击这些元素。不过,到那时,你的循环已经很久以来一直在运行。为了摆脱循环,您需要在与添加点击处理程序的位置相同的某个位置return

此外,通过循环注册点击处理程序,您实际上会多次注册它们。最好在循环外注册处理程序,这样你只需注册一次。

答案 1 :(得分:1)

你实际上并没有在每个函数内部的任何地方调用return false。您将函数附加到自身调用的函数返回false。

此外,你必须在这种情况下使用return false,因为它实际上不是一个循环,它是一个函数。你可以打破一个真正的循环。

答案 2 :(得分:0)

$(".edit_more_assets").on("click", function(){
        var id1 = $(this).prop("id");
        alert(id1);
        return false;

    });
    $(".remove_more_assets").on("click", function(){
            var id1 = $(this).prop("id");
            alert(id1)
            return false;
    });

从$ .each

中移出这些点击功能