Javascript 如何从其他文件更改加载的元素ID?
准确地说:Javascript 如何从其他文件更改加载的元素ID?,javascript,jquery,html,Javascript,Jquery,Html,准确地说: for(var i=0;i<10;i++){ $('.mov_c').append('<div class="move_1" id="vid_c_'+i+'"></div>'); $('#vid_c_'+i).append('<div class="move_2"></div>'); $(".move_2").load("cntent.html", function (){ $('#thee
for(var i=0;i<10;i++){
$('.mov_c').append('<div class="move_1" id="vid_c_'+i+'"></div>');
$('#vid_c_'+i).append('<div class="move_2"></div>');
$(".move_2").load("cntent.html", function (){
$('#theelement').attr("id", "id_"+i);
});
}
for(var i=0;i异步加载的数据和闭包有问题。用IIFE包装代码,以正确的方式使用闭包
for(var i=0;i<10;i++){
$(".move_2").load("cntent.html", (function (index){
return function() {
$('#theelement').attr("id", "id_"+ index);
}
})(i));
}
for(var i=0;i您可以尝试以下方法:
for(var i=0;i<10;i++){
$('.mov_c').append('<div class="move_1" id="vid_c_'+i+'"></div>');
var move2Div = $('<div class="move_2" data-index="'+i+'"></div>'); //defining move_2 separately with data-index holding the index value
$('#vid_c_'+i).append(move2Div);
$(move2Div).load("cntent.html", function (){
var currentIndex = $(this).data("index"); //grabbing the data-index value
$('#theelement').attr("id", "id_"+currentIndex); //updating the id with required one
});
}
for(var i=0;i为所有要迭代的元素提供类似的类名。
并遍历所有元素。
使用this
关键字更改id
<div class="CONTAINER_NAME">
<div class="COMMAN" id="a"></div>
<div class="COMMAN" id="b"></div>
<div class="COMMAN" id="c"></div>
</div>
$('.CONTAINER_NAME .COMMAN_CLASS_NAME').each(function(index){
$(this).attr("id", "id_"+index);
});
$('.CONTAINER\u NAME.COMMAN\u CLASS\u NAME')。每个(函数(索引){
$(this.attr(“id”,“id_u3;”+索引);
});
您可以向我们展示您的HTML。并让我们知道您到底想要实现什么?您正在进行10个AJAX调用=>在某些DIV中加载内容并尝试更改一个元素的id。您的“#threeelement”是否是在您的主视图中,还是它是您的响应的一部分?从上面的代码中,我认为您永远不会在页面上同时有10个不同的元素
。因为无论何时.load
方法的成功回调都将被调用;您先前添加的元素
将被删除,新的html元素将出现并加入side.move_2
。请考虑容器页面上有多少元素具有类move_2
?这可能会导致基于回调方法执行顺序的随机行为。这不是一个好主意……我不这么认为。只有当我们得到响应时,计数器才会递增。正确,但响应的顺序是什么获得的onses?这取决于服务器和与服务器的连接。绝对不能保证响应将按照与请求相同的顺序进行处理。当然,如果顺序不重要,那么这是一种方法。但是我们不知道(从问题中)如果顺序重要或不重要,最好假设它重要。因此我猜它同样适用于您建议的答案…;)!用真正的ajax调用@Anton证明它。不知道为什么,但这甚至不会改变元素idstryconcole.log
,在设置attrbite之前确保您在这里有正确的id。日志显示了什么?已经有了console.log(“index:“+index)
值从1到10,有什么问题吗?你想达到什么目的,你能澄清一下吗?只是索引值显示正确,但元素id根本没有改变
for(var i=0;i<10;i++){
$('.mov_c').append('<div class="move_1" id="vid_c_'+i+'"></div>');
var move2Div = $('<div class="move_2" data-index="'+i+'"></div>'); //defining move_2 separately with data-index holding the index value
$('#vid_c_'+i).append(move2Div);
$(move2Div).load("cntent.html", function (){
var currentIndex = $(this).data("index"); //grabbing the data-index value
$('#theelement').attr("id", "id_"+currentIndex); //updating the id with required one
});
}
<div class="CONTAINER_NAME">
<div class="COMMAN" id="a"></div>
<div class="COMMAN" id="b"></div>
<div class="COMMAN" id="c"></div>
</div>
$('.CONTAINER_NAME .COMMAN_CLASS_NAME').each(function(index){
$(this).attr("id", "id_"+index);
});