如何从其他文件更改加载的元素ID?

时间:2017-01-23 08:54:46

标签: javascript jquery html

确切地说:

t_histo_rows = [
        tf.histogram_fixed_width(
            tf.gather(t, [row]),
            vals, nbins)
        for row in range(t_num_rows)]

t_histo = tf.pack(t_histo_rows, axis=0)

cntent.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 (){
        $('#theelement').attr("id", "id_"+i);
    });
}

New Udate:

<div class="theelement" id="theelement"></div>

没有工作

基本上我希望每次for(var i=1;i<10;i++){ $(".move_2").load("cntent.html", (function (x){ $('.#theelement').attr("id", "id_"+x); console.log("Index: "+x); // output values are from 1 to 10 })(i)); } } 被称为我的cntent.html刚刚创建的ID都会更改为theelement值。我执行此操作的方式的问题在于它将整个元素ID更改为i,但我希望id_10的ID基于theelement循环值进行更改,说:id为for的元素1,id为id_1的元素2,依此类推。

此致

3 个答案:

答案 0 :(得分:0)

异步加载数据和闭包有问题。用IIFE包装你的代码以正确的方式使用闭包

for(var i=0;i<10;i++){
    $(".move_2").load("cntent.html", (function (index){
        return function() {
            $('#theelement').attr("id", "id_"+ index);
        }
    })(i));
}

答案 1 :(得分:0)

为要迭代的所有元素提供类似的类名。 并遍历所有元素。 使用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);
});

答案 2 :(得分:-1)

您可以尝试以下方式:

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
    });
 }