2015-10-13 53 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