if else语句中的jQuery addClass和removeClass不起作用

时间:2017-11-29 10:55:10

标签: javascript jquery if-statement

所以我创建了一个带边框的类。叫边境检查。此边框仅需要在td.k-editable-area没有值时显示(没有在textarea中写入)。

我可以添加第一行的类,但是一旦我添加了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");
}

3 个答案:

答案 0 :(得分:2)

你的if语句正在比较两个不同的字符串。

"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");
   }
})

答案 1 :(得分: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很奇怪。)

答案 2 :(得分:0)

OP在这里,我最终在你的帮助下找到了答案。谢谢!正确的代码是:

 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");
            } 
        }