jQuery在新生成的项目上设置属性

时间:2013-07-02 17:58:41

标签: jquery dom insert

我正在获取选择的html并希望给它一个新名称,这就是我现在正在尝试的内容:

var sel = $("#rmFilesListSelect").html();
$(sel).attr({name: "item_files[fid-123]"});
$("#someTable tbody").append("<tr><td>" + sel + "</td></tr>");

但是,这并不像我预期的那样有效。而是从#rmFilesListSelect插入旧的id。我在这里缺少什么?

编辑: 我最终使用了几个注释的组合(包括来自https://stackoverflow.com/a/5259788/1231450的outerHTML(),由bitfiddler链接)

var sel = $("#rmFilesListSelect").clone();
$(sel).attr({name: "item_files[fid-123]"});
$("#someTable tbody").append("<tr><td>" + $(sel).outerHTML() + "</td></tr>");

非常感谢!

4 个答案:

答案 0 :(得分:1)

尝试:

var sel = $("#rmFilesListSelect").html();
$(sel).wrapAll("<tr><td><div id='item_files[fid-123]'></div></td></tr>");
$("#someTable tbody").append("sel");

编辑: 还有这样的东西?

var sel = $("#rmFilesListSelect").clone();
$(sel).attr({id: 'new_id', name: 'new_name'});
$("#someTable tbody").append(sel);

答案 1 :(得分:1)

你的第一行将变量sel设置为html而不是对象。在第2行中,您将其视为对象并尝试设置其名称属性。我认为您需要将第1行更改为:

var sel = $("#rmFilesListSelect");

和第3行:

$("#someTable tbody").append("<tr><td>" + sel.html() + "</td></tr>");

答案 2 :(得分:0)

使用此:

var sel = $("#rmFilesListSelect").html();
// Above line gives the entire html of rmFilesListSelect element
// So better, you can select an element from that html to set the name as used like below line
$(sel).attr("name", "item_files[fid-123]") ;
$("#someTable tbody").append("<tr><td>" + sel + "</td></tr>");

答案 3 :(得分:0)

一些例子: JS

var jquery_selector = $("#test");
jquery_selector.attr("data-id", "data-test");
var input_value = jquery_selector.data("id"); //got value of extended data attribute
jquery_selector.append('<input type="text" value="' + input_value + '"/>');
jquery_selector.append(jquery_selector.html());

HTML

<div id="test">some text</div>

http://jsfiddle.net/ZU4BD/2/

希望它会有所帮助。