2009-12-18 71 views
1

什麼不對這個代碼...jQuery的過濾器幫助

var objects = $(".validated").filter(function(){ 
            return $(this).attr("name") == 'name'; 
          }).filter(function(){ 
            return $(this).val() == ''; 
          }); 

它真的纏着我:(

+0

你想做什麼?什麼不起作用? – Matt 2009-12-18 20:45:42

+1

它不起作用。 Im asssuming你想過濾掉沒有名稱等於「名稱」的任何元素,並過濾出沒有空白值的元素? – a432511 2009-12-18 20:47:19

+1

從你的其他問題,我認爲你正在尋找的東西是*或*過濾器在一起? – 2009-12-18 20:55:45

回答

2
var objects = $(".validated").filter(function() { 
    var ele = $(this); 
    return ele.attr("name") == 'name' || ele.val() == ''; 
}); 
+0

我不相信這被接受。它不能實現tarnfeld要求的內容......當name ='name'且元素值爲空時,他想過濾掉OUT。當函數返回false時,過濾器消除元素。 「如果函數返回false,那麼該元素將被移除 - 其他任何元素都將保存在匹配元素的結果集合中。」 -http://docs.jquery.com/Trackinging/filter – a432511 2009-12-22 01:45:31

+0

我不清楚他是否真的想做你暗示的事情。他自己的代碼似乎試圖保持我的那些元素。你在哪裏第一次使用「過濾」這個詞。也許tarnfeld被「out」理解爲「過濾出去,去掉其他人」爲這些或類似的添加一個錯誤類 – jitter 2009-12-22 07:15:08

0

過濾器時,該函數返回false將刪除的元素。所以,你希望它返回false當你遇到一個元素與NAME =「名字」,當它是空

var objects = $(".validated").filter(function(){ 
            // Will return false when name="name" 
            return $(this).attr("name") != 'name'; 
          }).filter(function(){ 
            // Will return false when the value is blank 
            // Added trim to ensure that blank spaces 
            // are interpreted as a blank value 
            return $.trim($(this).val()) != ''; 
          }); 

縮短的版本是:

var objects = $(".validated").filter(function(){ 
        // Will return false when name="name" or blank value 
        return $(this).attr("name") != 'name' && $.trim($(this).val()) != ''; 
       }); 
+0

所以'名稱'位 - 當它獲得attr'name'='name'時,它是否會將對象添加到數組'objects'? – tarnfeld 2009-12-18 21:07:02

+0

不...它擺脫名稱=「名稱」 – a432511 2009-12-18 21:08:59

+0

的元素,也擺脫了空白值的元素 – a432511 2009-12-18 21:14:51