2015-10-13 64 views
2

我在查找和設置基於jQuery數據集的元素的值時遇到問題。jQuery從數據中查找元素

的數據集是這樣的:

$(this).data('scanner', {type: 'input', id: index}); 

然後我試圖這樣設置元素的值:

$('[data-type="input"][data-id="0"]').val(string); 

但沒有設置...控制檯也不會拋出任何錯誤。

+1

那是因爲你使用的屬性選擇的數據值 - 你不能這樣做 –

+1

如果你想在選擇器中使用它們,你需要使用它們作爲屬性值。 –

+1

'$(this).attr({ data-type':'input','data-id':index});' –

回答

3

可以使用filter

$("some_selector").filter(function(){ 
    var scannerData = $(this).data('scanner'); 
    return scannerData 
      && scannerData.type === "input" 
      && scannerData.id === 1; 
}).val("some string"); 

下面是一個例子:

$("#div1").data('scanner',{type: 'input', id: 1}); 
 

 
$('div').filter(function(){ 
 
    var scannerData = $(this).data('scanner'); 
 
    return scannerData && scannerData.type === "input" && scannerData.id === 1; 
 
}).text("Updated");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="div1">Div1 (has data)</div> 
 
<div>Div2</div> 
 
<div>Div3</div>

+0

如果我想通過正確使用數據來查找,它會是'$('data(scanner.type =='input',scanner.id == 0)');'? –

+0

@ChrisByatt Ive更新了答案並添加了一個例子 - 希望會有所幫助。 – Jamiec

+0

沒有看到你的答案,刪除重複 – Tushar