2012-01-31 8 views
1

次のjQueryコードを使用して、title属性と同じ値を持つテキストフィールドの数を数えます。特定の値を含まない要素を選択するjQuery

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

問題:はどのように私はそのtitle属性に等しい値を持っていませんテキストフィールドの数を数えるのですか?

答えて

1

まず、あなたが投稿したコードは、あなたが言うことをしていません。この:

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

最初の「.textfield」要素のtitle属性のタイトルにクラス「.textfield」とすべて要素の値を設定し、それらのすべての数を返します。

.val()メソッドの戻り値(現在の値を返すパラメータなし)を.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

+0

ありがとう@gdoron。一定。 – nnnnnn

1

私はfilter()を使用し、返されたセットのlengthプロパティにアクセスします。

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

また、おそらくreturn this.value != this.titleとしてfilter()の本体と離れて得ることができます。

+0

トウシュの

  • 使用length財産!私はちょうどそれを投稿していた:) – Eli

  • +0

    いいね。 $(this)を$ thisと同じ行に2回保存する必要はありません。 – gdoron

    +0

    @gdoronコードの余分な行にはならないマイクロ最適化のような音です。 – alex

    0
    • filter関数を使用します。セレクタ

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