2012-01-31 52 views
1

我正在使用以下jQuery代碼來計算具有與其標題屬性相同的值的文本字段的數量。jQuery選擇不包含特定值的元素

$(".textfield").val($(".textfield").attr('title')).size(); 

問題:我怎麼數着文本字段的數量已經等於其標題屬性的值?

回答

1

首先,你發佈的代碼沒有做你說的那樣。這:

$(".textfield").val($(".textfield").attr('title')).size(); 

威爾設置帶班「.textfield」第一個「.textfield」元素的title屬性的標題所有元素的值,然後返回所有的人的數量。

您需要將方法的返回值(無參數返回當前值)與.attr('title')方法的返回值進行比較。你可以用.filter()做到這一點,然後檢查所生成的jQuery對象的.length

$('.textfield').filter(function() { 
    var $this = $(this); 
    return $this.val() == $this.attr('title'); 
}).length; 

然後讓這些計數當值不等於只是做同樣的事情,除了與!=,而不是==。所以:

$('.textfield').filter(function() { 
    var $this = $(this); 
    return $this.val() != $this.attr('title'); 
}).length; 

(注意:.length會給你同樣的算作.size(),但沒有一個函數調用的開銷。)

+0

它是'textfield'而不是'textbox' – gdoron 2012-01-31 04:32:05

+0

Thanks @gdoron。固定。 – nnnnnn 2012-01-31 05:04:49

1

我會使用filter()然後訪問返回集的length屬性。

var count = $('.textfield').filter(function() { 
       return $(this).val() != $(this).attr('title'); 
      }).length; 

你也很可能逃脫的filter()作爲return this.value != this.title身體。

+0

德勤的!我只是張貼:) – Eli 2012-01-31 04:11:45

+0

不錯。只需將$(this)保存爲$ this,不需要在同一行中執行兩次... – gdoron 2012-01-31 04:20:45

+0

@gdoron聽起來像是微型優化,不值得額外的代碼行。 – alex 2012-01-31 04:36:18

0
  • 使用filter功能。
  • 使用length屬性選擇

var length = $('.textfield').filter(function() { 
       return this.value != this.title; 
      }).length; 
相關問題