2011-10-20 18 views
0

私のコンテンツページの中には、複数のコントロールとlableを含むリピータコントロールがあります。 lableのIDは "LEmptyComments"です。私の要件は、ラベルのクラス名が空であるかどうかをチェックすることです。 Ifブロックは私が間違っていることを決して実行しませんか?jQueryを使用してaspxラベルのクラスを確認してください

function chkCmnts() { 

     var val = 1; 
     $("label[id*='LEmptyComments']").each(function() { 
      if ($(this).className != "") { 
       val = 0; 
       return val; 
      } 
     }); 
     return val; 

    } 

これは、HTMLページのようにどのようにlable外観です:

<span id="MainContent_DlReviewImages_LEmptyComments_13" class="error">...... </span> 
+0

セレクタ( '$(" label [id * = 'LEmptyComments'] ")')が結果を返すことは確かですか?その場合は、ASPXページのソースを表示しようとしましたか?ソースを表示するだけで問題を見つけるのに役立たない場合は、ASPXページから生成されたHTMLコードを投稿することをおすすめします。 –

+0

@KileyNaroは、セレクタが結果を返さないようです。 – BumbleBee

答えて

1

classNameは有効なjQuery関数またはプロパティではありませんが、jQueryオブジェクトで呼び出すことはできます。また、あなたはlabel Sをループしているといないspan sが:

function chkCmnts() { 
    return $("span[id*='LEmptyComments'][class!='']").length > 0 ? 0 : 1; 
} 

function chkCmnts() { 
    var val = 1; 
    $("span[id*='LEmptyComments']").each(function() { 
     if (this.className) { // "" is falsey 
      val = 0; 
      return val; 
     } 
    }); 
    return val; 
} 

あなたは実際には1 jQueryのステートメントを使用して、この全体の事と、そのステートメントのlengthの条件演算子を置き換えることができます例:http://jsfiddle.net/LLKbP/

+0

ありがとうございました。それは魅力のように機能します。私が別のlable 'LEmptyCategory'のために同じことをしなければならない場合は、 'LEmptyComments'に加えて、同じスパンでそれを追加することが可能です[id * =] – BumbleBee

+1

問題ありません。私はあなたがカンマ( '、')を使って複数のセレクタを組み合わせる方法を尋ねていると思います: '$(" selector1、selector2 ")....' –

0

使用:$("#LEmptyComments") ..........

、あなたがする必要はありませんそれぞれが1つしかないからです(そうすべきです)。

+0

私は、ラベルが複数のlablesがあることを意味するinsdieコンテンツページであるリピータコントロールの内側にあると述べました。これはHTMLのように見えます。 BumbleBee

1

これを試してみてください:

var class = $("#<%=LEmptyComments.ClientID%>").attr("class"); 

EDIT

これはあなたの問題を解決しますが、私はあなたが達成しようとしているものを求めるだろう

+0

申し訳ありませんが、あなたはそれがASP.NETのラベルだと分かりました。修正された答えは魅力のように働くはずです。 –

0

ASP.NET Labelコントロールで動作するように改訂 よりよい解決策が存在する可能性があるためです。

function chkCmnts() { 

     var val = 1; 
     $("#LEmptyComments").each(function() { 
      if ($(this).className != "") { 
       val = 0; 
       return val; 
      } 
     }); 
     return val; 

    } 
1

"label"はHTML要素ではなく、ASP.NETコントロールタイプです。

リピーター内のコントロールに生成されたasp.net IDを照合するのではなく、既知のクラスを各ラベルのマーカーとして事前に割り当てるだけです。このようにして、テストしようとしている一連のコントロールを簡単に取得できます。

これを済ませたら、必要なものをチェックしてください。

$('.repeater-label').each(function() { 
    if (this.className != 'repeater-label') { 
     /// any elements with classes other than just repeater-label 
    } 
}); 

「リピーターラベル」あなたはリピーターの内側を見てみたいすべてのものに追加されたクラスは、おそらく、それはあなたが探している要素のためにあまりにもいくつかの他のクラスを持つことになります。

関連する問題