2017-11-29 7 views
-1

私は境界線を持つクラスを作成しました。国境チェックと呼ばれる。この境界線は、td.k-editable-areaに値がない場合(テキストエリアには何も書き込まれていない)に表示する必要があります。jQuery addClassとremoveClass in if else文が動作しない

最初の行でクラスを追加できますが、if elseステートメントを追加すると、クラスが追加されなくなります。だからクラスをもう一度追加するか、if else文を正しく記述しても問題がないかどうかはわかりません。

$("td.k-editable-area").addClass("border-check"); 

if ("td.k-editable-area" == "") { 
    $("td.k-editable-area").addClass("border-check"); 
} else { 
    $("td.k-editable-area").removeClass("border-check"); 
} 
+0

'IF($( "td.k-編集可能エリア")、テキスト()トリム()== ''。。)' ' – Satpal

+0

「td.k-編集可能なエリア"==" "'は同じではない2つの文字列を比較しています。 –

+0

代わりに '.toggleClass'を試してください。 toggleClass( "border-check"、$( "td.k-editable-area")。text()。trim()== '); ' – Rajesh

答えて

0

ここでは、私はあなたの助けを借りて答えを見つけました。ありがとうございます!正しいコードは:

function onEditorChange(e) { 
      var text = e.sender.body.innerText; 

      if (text.trim() === "") { 
       $("td.k-editable-area").addClass("border-check"); 
      } else { 
       $("td.k-editable-area").removeClass("border-check"); 
      } 
     } 
2

if文は2つの異なる文字列を比較しています。

"td.k-editable-area" == "" //false 

それは要素$("td.k-editable-area")から値を取っていないので、作ること

if ($("td.k-editable-area").text().trim() == "") { 

編集

これは、複数のチェック、その後td

$("td.k-editable-area").each(function(){ 
    var $this = $(this); 
    if ($this.text().trim() == "") { 
     $this.addClass("border-check"); 
    } else { 
     $this.removeClass("border-check"); 
    } 
}) 
しなければならない場合
+0

' $( "td.k-editable-area"この条件は、**すべての**一致する要素が空白(最初のものだけであるが、 'text'は普通ではない関数)であれば真であることに注意してください。これはOPが望むものです。 –

+0

私のコードに編集を入れました。これでクラスが追加されましたが、値が空でないときにクラスを削除していません。 –

+0

空のときに削除したいのですか、空のときに追加しますか? – gurvinder372

1

あなたの条件は2つの文字列をテストしていますが、これはあなたが望むものではありません。

あなたの目標は、特定の1が空であるかどうかに基づいて、それらtd秒のにクラスを追加/削除する場合は、あなたがループをする必要があります:

$("td.k-editable-area").each(function() { 
    var $this = $(this); 
    $this.toggleClass("border-check", !$this.text().trim()); 
}); 

あなただけではなく、することができますそれは、彼らがすべて空白だかどうかに基づいてすべて要素にクラスを更新しますので...

// NOT THIS 
$("td.k-editable-area").toggleClass("border-check", !$("td.k-editable-area").text().trim()); 

を使用しています。 (他のjQueryアクセサでは、最初のものをベースにしていますが、textは奇妙です)

関連する問題