2014-10-12 24 views
0

我有一个包含<input ...字段的jQuery DataTables表。根据用户在同一页面上的输入,我需要对<input ...的属性进行一些更改。该字段有一个id属性,但在需要进行此属性更改时未知。jQuery - 如何使用HTML字符串作为控制元素

使用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"); 

难道还有比解析视为纯字符串,这样做其他更简单的方法?

EDIT

如上所述,我使用jQuery数据表并执行用于含有的红色值的颜色属性的所有表中的行的检索:

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

行是包含数组包含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根据需要,但在数据表控制字段没有更新。所以我需要将newHtml转换回字符串,使用DataTables API替换单元格内容,然后使用DataTables .draw()函数更新表格。

回答

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); 
+0

然后我会如何将newHTML切换回字符串?我正在使用DataTables,属性没有改变。我必须将字符串放回到表格单元格中并发出一个draw()。 – rwkiii 2014-10-12 13:28:30

+0

是否要更改颜色属性?什么是draw()?你在问如何访问属性,这是一种方法。请更具体的你想要做什么 – 2014-10-12 13:35:44

+0

我正在改变jQuery DataTables中单元格的值。 inputfield的值是一个字符串,因为DataTables通过搜索API返回它。我需要更改一些属性,然后将其作为字符串放回DataTables单元格中。我看到你的jsfiddle工作正常。我试图理解为什么它不适合我。我尝试在DataTables上发出draw()函数,但是这并没有解决它。我相信你的代码是正确的。 – rwkiii 2014-10-12 13:44:04

0

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

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

如果可能的话,我会建议你可以定义两个CSS类,一个是“红色”,一个是“黑色”。然后使用.addClass()和.removeClass()来改变视觉效果。 – Rein 2014-10-12 13:08:33

+0

@Rein颜色和大小属性就是例子。我根本不需要改变CSS。 – rwkiii 2014-10-12 13:13:59

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">' 
+0

我收到一个externalHTML不是函数的错误。 – rwkiii 2014-10-12 13:13:21

+0

@rwkiii哦,真的,它在这里工作,因为StackExchange将它添加为jQuery扩展。固定。 – Oriol 2014-10-12 13:17:09

+0

我仍然得到outerHTML不是一个函数。 :S – rwkiii 2014-10-12 13:26:35

相关问题