【问题标题】:Putting <div> inside <td> dynamically using Jquery (vai xml parsing)使用 Jquery 动态地将 <div> 放入 <td> (vai xml 解析)
【发布时间】:2012-01-25 02:08:42
【问题描述】:

我需要获取我正在创建的 div 的 id 我的代码是:

    tab_Div = $ ('#id_of_table')
    $(xml).find('something').each(function(i){
    value1 = $(this).attr('some_attribute');
    newID = "divID_"+i;

    var my_row = $('<tr><td>'+value1+'</td><td><div id="'+newID+'"></div></td></tr>').appendTo(tab_Div);

    drawBar(value1,newID);
    //This function draws progressbar of "value1" in the div whose id is "newID"
});

理论上,这个函数应该在有两个单元格的表格中添加一行 1.哪个显示值 2. 该值的进度条。

但我认为,“Div”的“id”有问题。并且“newID”是一个字符串,不是任何 obj 的 'id'

谁能帮我解决这个问题???
请告诉我如何绘制所需的表格(即在一个单元格中使用进度条)

drawBar()的代码

function drawBar(no,eid)
    {
        $(eid).progressbar({value: no});
        $(eid).css({background: '#99FF66'});
        $(eid+" > div").css({background: '#009900'});
        $(eid+" > div").css({border: 'none'});
    }

drawbar 函数只是将一个 jqueryUI 进度条绘制到它在“eid”接收到的 DIv 中

【问题讨论】:

  • 你的 drawBar(value1,newID) 函数是做什么的?????? ,你能把代码发一下吗
  • 我将 drawBar() 添加到我的问题中,我只是调用 JqueryUI 进度条的 $(id).progressbar(value:something)

标签: javascript jquery html xml-parsing


【解决方案1】:

您好,我看到了您的代码,发现您没有关闭 td 中的 div 标签 编辑:不仅div标签没有关闭,而且你还传递了错误的表变量tab_Div你已经传递了tab_div

  tab_Div = $ ('#id_of_table')
    $(xml).find('something').each(function(i){
    value1 = $(this).attr('some_attribute');
    newID = "divID_"+i;

    var my_row = $('<tr><td>'+value1+'</td><td><div id="'+newID+'" ></div></td></tr>').appendTo(tab_Div);

    drawBar(value1,newID);

评论后编辑:

以下是代码:

<body>
<table id="id_of_table" style="width:50%; border:1px solid red; float:left" >
</table>
<script type="text/javascript" >
$(document).ready(function(){

    tab_Div = $ ('#id_of_table');
    for (var i =1; i<=10; i++){
        value1 = "test";
        newID = "divID_"+i;
        $('<tr><td>'+value1+'</td><td><div id="'+newID+'" >i m inside div </div></td></tr>').appendTo(tab_Div);
}
    //drawBar(value1,newID);


});


</script>
</body>

上面的代码工作正常,当你将它附加到表时,你为什么将它传递给变量my_row 不需要。在 HTML 页面中尝试我的代码,记得添加 jQuery 文件。

【讨论】:

  • @Murtaza !!!对不起,这是一个打字错误,..我现在更正了。但在实际代码中没有这样的错误
  • 我稍后使用my_row 变量来更改新创建的行的css属性。
  • 你有没有检查一下拉杆功能的评论,我认为你的$(xml).find('something').each(function(i){})有问题
  • 你!我检查了它们,表正在创建,drawBar() 也正确接收 id ...但我认为 drawBar 只接收 id 字符串,而不是实际 id ....&lt;td&gt;&lt;div id="'+newID+'"&gt;&lt;/div&gt;&lt;/td&gt; 行中有一些问题
  • 所以你可以尝试通过$("#" + newID) 将控制权传递给drawBar 我从未尝试过这样的事情。但它应该可以工作。不是传递 id,而是选择控件并传递给您的 drawBar 函数。 注意根据参数的变化更新你的drawBar函数
【解决方案2】:

我认为这段代码是错误的

<div id="'+newID+'"</div>

请改成

<div id='+newID+'></div>

【讨论】:

    【解决方案3】:

    我发现在 javascript 中生成足够唯一的 id 的最简单方法是从 Date 对象获取属性。

    var date = new Date();
    var id = "" + date.getHour() + date.getMinutes() + date.getSeconds() + date.getMilliseconds();
    

    要跟踪已创建的 ID,您可以使用数组

    var _ids= new Array();
    
    ...
    
    $(xml).each(function(i) {
      ...
      newID = "divID_"+i;
      _ids.push(newID);
    });
    

    然后,当您需要访问 div 时,您可以通过数组

    【讨论】:

    • newID = "divID_"+i; 在每次迭代中为我创建一个不同的 id。我的问题完全不同,我想要的只是在 中创建
      并访问新创建的 div 的“id”。
    • 所以您需要一种方法来跟踪已创建的 ID?您可以将它们添加到数组中
    • 耶!!我需要在每次迭代中将这些 ID 传递给一个函数。你能告诉我我该怎么做吗?
    • 我更新了我的答案,展示了一种使用数组跟踪 id 的方法
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签