在变量中更改html元素id

时间:2014-06-17 10:22:45

标签: javascript jquery html

我在变量中有一个html现在我想要更改jquery变量中特定元素的id,但我无法做到。

HTML

<tbody id ="testid">
<tr><td></td><tr>
<tr>
    <td colspan="10"  style="font-size:14px;background-color:#5858FA;color: #FFFFFF;cursor:pointer">MYNAME</td>
    <td><input type="text" name ="first_test" id ="test1"></td>
    <td colspan="10"  style="font-size:14px;background-color:#5858FA;color: #FFFFFF;cursor:pointer">CLG</td>
    <td><input type="text" name ="second_test" id ="second2"></td>
    <td colspan="10"  style="font-size:14px;background-color:#5858FA;color: #FFFFFF;cursor:pointer">Address</td>
    <td><input type="text" name ="third_test" id ="second3"></td>
</tr>
</tbody>

代码

var xHtml = $('#test_id tr:gt(0)').map(function(){return this.outerHTML;}).get().join('');
xHtml = $(xHtml).find('#td_id').attr('id', 'tdid_test').end().map(function () {alert(this.outerHTML); return this.outerHTML;}).get().join('');

执行此操作后,我在xHtml变量中得到空白值。请建议我们如何做到这一点

5 个答案:

答案 0 :(得分:0)

您可以直接更改ID,因为ID是唯一的:

$('#td_id').attr('id', 'tdid_test')

您不需要使用find id并定义id。

此外,您不需要在$(xHtml)中绑定jQuery包装器,只需xHtml即可。

答案 1 :(得分:0)

我的理解是你有一个存储在xHtml中的html代码片段 并且您希望将一个id替换为另一个id并将其恢复到相同的xHtml变量中。

为什么不使用简单的替换?像

xHtml = xHtml.replace("id", "tdid_test");

答案 2 :(得分:0)

不要保存为html,而是保存为对象。 克隆对象,更改id并追加。

我有一个例子:

<p id="id1">Some text.</p>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
var x  = $("body");
y = x.clone(true);
y = $(y).find('#id1').attr('id', 'new_id');
$("body").append(y);
</script>

使用您的代码:

var xHtml = $("#testid").clone(true);
xHtml = xHtml.find('#td_id').attr('id', 'tdid_test');
// now you can append

答案 3 :(得分:0)

请注意您的HTML已经(并且没有ID test_id):

<tbody id ="testid">

但是你正在寻找:

$('#test_id')

然后,当您在html中的唯一其他#td_id为:id's时,您正在搜索test1, second2, second3

下面的代码将提取正确的html并更改id并显示修改后的标记。

WORKING JS FIDDLE DEMO

$(function() {
    var xHtml = $('#testid').html();
    //console.log( xHtml );
    xHtml = $(xHtml).find('#test1').attr('id', 'tdid_test').end().map(function () {
        console.log(this.outerHTML); return this.outerHTML;
    }).get().join('');
    console.log( xHtml );
});

答案 4 :(得分:-1)

您的变量引用了HTML。 如果您不希望在页面上更改ID - 只需使用jQuery Clone()克隆您的HTML部分,如下所示:

var $yourHTMLclone = xHtml.clone();

然后执行您希望的任何更改,因为它是一个普通的jQuery对象。