jQuery - 如何使用HTML字符串作为控件元素

时间:2014-10-12 12:58:25

标签: jquery

我有一个包含<input ...字段的jQuery DataTables表。根据同一页面上的用户输入,我需要对<input ...的属性进行一些更改。该字段具有id属性,但在进行此属性更改时尚不知道。

使用DataTables API我找到了包含输入字段的行索引。我也知道列,所以我能够像这样检索输入字段:

var inputfield = $('#oTable').DataTable().cell(row, column).data();

这导致inputfield包含字符串:

<input value="0" id="someid" color="red" size="large" type="text">

我想使用jQuery访问此控件的属性,如下所示:

inputfield.attr("color", "black");

但这不起作用。是否有一种简单的方法来获取HTML字符串并使用它,就好像它是一个像这样访问的控制字段:

var inputfield = $('#someid');
inputfield.attr("color", "black");

除了解析为普通字符串之外,还有更简单的方法吗?

修改

如上所述,我正在使用jQuery DataTables并搜索包含值为red的color属性的所有表行:

var color = "red";
rows = dpTable.fnFindCellRowIndexes('color="' + color + '"');

Rows是一个包含color="red"行的索引的数组,这是有效的。返回值的示例为rows = [2, 5, 12]

现在我想更改每行单元格上<input ...字段的一些属性。所以我这样做:

$.each(rows, function (index, value) {
    var inputfield = $('#oTable').DataTable().cell(value, 1).data();
    var newHtml = $(inputfield);
    newHtml.attr("color", "TEST");
    alert($(newHtml).attr("color"));
});

上面的alert()会根据需要返回TEST,但DataTables中的控制字段不会更新。所以我需要将newHtml转换回字符串,使用DataTables API替换单元格内容,然后使用DataTables .draw()函数更新表格。

3 个答案:

答案 0 :(得分:1)

不确定我是否理解,但您可以尝试

var html = '<input value="0" id="someid" color="red" size="large" type="text">';
$(html).attr("color", "black")[0].outerHTML;
    // '<input value="0" id="someid" color="black" size="large" type="text">'

答案 1 :(得分:1)

您可以像http://jsfiddle.net/0tag89yf/1/

一样访问变量的属性
var inputfield = '<input value="0" id="someid" color="red" size="large" type="text">';
var newHTML = $(inputfield);

var color = newHTML.attr('color');

alert(color);

答案 2 :(得分:0)

我们可以将字符串解析为元素,然后获取其ID,然后在DOM中找到该ID。

var inputfield = $('#' + $('<input value="0" id="someid" color="red" size="large" type="text">').attr('id'));