2014-10-12 30 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

相關問題