2012-08-08 121 views

回答

2

您要使用的"has attribute"选择,然后filter基础上的价值。

$('[data-num]').filter(function(){ 
    return parseInt($(this).data('num'), 10) >= 251; 
}); 

DEMO:http://jsfiddle.net/xsvrv/

UPDATE:根据您的意见,如果你想更新数据,NUM值,你可以这样做:

$('[data-num]').filter(function(){ 
    var num = parseInt($(this).data('num'), 10); 
    if(num >= 251){ 
     $(this).data('num', num+1); 
     return true; 
    } 
    return false; 
}); 
+0

太棒了! – user1559555 2012-08-08 21:22:07

+0

不客气:-) – 2012-08-08 21:24:39

+0

虽然一个问题...我可以以某种方式增加过滤出来的元素的数据编号吗?我试过'attr('data-add',$(this).data('add')+ diff);'但它不起作用;)对不起这样一个蹩脚的问题,我对jQuery – user1559555 2012-08-08 21:32:31

1
$('[data-num]').filter(function(){ 
    if (parseInt(this.getAttribute('data-num')) >= 251){ 
     return true; 
    } 
    else{ 
     return false; 
    } 
}) 
+0

+1我喜欢你使用'this.getAttribute()'而不是'$(this).data()',因为这里不需要jQuery,原生JS会更快。 OP应该知道'$('[data-num]')'不会很快,因为它必须检查文档中的每个对象。 – jfriend00 2012-08-08 21:34:32

+0

-1 for enought jQuery – Musa 2012-08-08 21:57:52