2012-08-08 116 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