循环的JQuery卡在最后一个索引处
JQuery for loop stuck at last index
我有一个函数process_row,它将标记附加到html中,并且这些标记在单击时链接到一个函数。(在这种情况下,只需提醒(i),它在结果数组中的位置)。
但是,单击后,新生成的警报会显示整个结果数组的长度。我尝试了很多改变,试图让它发挥作用,但没有。
奇怪的你,fab_div.attr("id", result_data[0])
;效果很好!!在chromeinspect元素中,id标记会按原样显示,但click函数会将所有内容都指向数组中的最后一个元素。
例如,如果我这样做,fab_div.click(function () { alert(result_data[0]) });
,我会得到数组中LAST元素的名称,而不管单击了哪个元素。
谁能向我解释一下…为什么??
我认为这可能与$("<div>")
有关,JQuery认为它是分配给它的同一个div。有办法解决这个问题吗?的是动态生成的,我不想让PHP做回显。此外,内容可以实时更新。
示例数据集:
Smith_Jones#Smith#Jones@janet_Moore#Janet#Moore@Andrew_Wilson#Andrew#Wilson
经过很多很多改变,仍然不起作用:
function process_row(data){
result_array = data.split("@");
if(result_array.length > 0){
result_data =result_array[0].split("#");
for(i = 0; i < result_array.length; i++){
result_data =result_array[i].split("#");
var fab_text = result_data[1] + " " + result_data[2]
var fab_div = $("<div>");
fab_div.addClass('scroll_tap');
fab_div.attr("id", result_data[0]);
fab_div.append(fab_text)
// fab_div.click(function () { alert(i) });
// ^ not working, try appending list of id's to id_list
id_list.push(result_data[0])
$('#ls_admin').append(fab_div)
}
for(j = 0; j < id_list.length; j++){
$('#' + id_list[j]).click(function () { alert(j) })
}
}
}
原始尝试:
function process_row(data){
result_array = data.split("@");
if(result_array.length > 0){
result_data =result_array[0].split("#");
for(i = 0; i < result_array.length; i++){
result_data =result_array[i].split("#");
var fab_text = result_data[1] + " " + result_data[2]
var fab_div = $("<div>").append(fab_text).click(function () { alert(i) });
fab_div.addClass('scroll_tap');
fab_div.attr("id", result_data[0]);
$('#ls_admin').append(fab_div)
}
}
}
如果您必须使用警报,那么您可以将点击处理程序封装在一个自执行函数中,并将索引传递给它
(function (index) {
fab_div.click(function () {
alert(index);
});
})(i);
不过,这并不是一个干净的方法。否则,如果你只想以任何方式操作div元素,那么直接添加任何方法也可以。比如
fab_div.click(function () {
alert($(this).attr('id'));
});
您可以在此处引用jsFiddle
奇妙的解决方案,但它成功了!哈哈!非常感谢Kevin B.
function process_row(data){
result_array = data.split("@");
if(result_array.length > 0){
result_data =result_array[0].split("#");
for(i = 0; i < result_array.length; i++){
result_data =result_array[i].split("#");
var fab_text = result_data[1] + " " + result_data[2]
var fab_div = $("<div>").append(fab_text);
fab_div.addClass('scroll_tap');
fab_div.attr("id", result_data[0]);
$('#ls_admin').append(fab_div)
}
$("#ls_admin").children(this).each(function( index ) {
$(this).append($(this).click(function () { alert($(this).text()) }));
});
}
}
相关文章:
- 多维关联数组的最后一个索引
- JavaScript更新最后一个索引类数据
- 如何避免在将索引作为函数的参数发送时引用for循环中的最后一个索引
- 获取具有值的序列中最后一个输入字段的索引
- 使用 jQuery 创建动态元素 单击事件始终返回 for 循环中的最后一个索引
- JavaScript 获取最后一个重复值索引 JavaScript
- 如何使用 Java 脚本中的最后一个索引删除子字符串
- 角度.js在 ng-repeat 中获取 2d 数组中最后一个元素的索引
- 循环的JQuery卡在最后一个索引处
- 可以使用Array.splice()通过在数组最后一个元素之外的索引处添加元素来创建稀疏数组吗
- 在循环中,I'm附加了一个标记,提醒循环索引计数.为什么它总是提醒循环的最后一个索引
- 仅在最后一个索引处检查foreach中的if条件
- 将jQuery/JavaScript中、的最后一个索引替换为和
- DOJO DataGrid-如何获取第一个可见行和最后一个可见行的索引(编号)
- 使用Angular ng-repeat获取数组的最后一个索引
- 将数组中的所有值向上移动一个索引,并将移位的最后一个元素作为第一个元素
- 跳过 jQuery 中 $.each 的最后一个索引
- 尝试从状态数组从索引进行拼接,但最终从第一个索引拼接到最后一个索引
- 如何在下拉列表中选择最后一个索引值
- 查找最后一个导入语句的索引