我从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;
});
});
答案 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
中移出这些点击功能