2010-02-13 105 views
1

我试图改变下面的代码,以便如果“this”包含类“search_init”,它将只会替换该类,因为标记本身有多个类应用于它。我尝试过〜=和^ =,但是这给了我关于missing()的错误。jquery更改==包含?

$("tfoot input").focus(function() { 
      if (this.className == "search_init") { 
       this.className = ""; 
       this.value = ""; 
      } 
     }); 

回答

5

尝试了这一点:

$("tfoot input").focus(function() { 
    var $this = $(this); 
    if ($this.hasClass("search_init")) { 
     $this.removeClass("search_int").val(''); 
    } 
}); 
+0

简短,高效,可读。 +1 – whiskeysierra 2010-02-13 15:32:33

+0

+1,尽管你可以用$(this).filter('。search_init')来缩短它。removeClass('search_init).val('');' – user113716 2010-02-13 17:47:40

+0

@patrick是的,但是你和你在一起可以在空的jQuery对象上运行removeClass和val,这是一种浪费。 – PetersenDidIt 2010-03-11 01:21:48

1
$("tfoot input.search_init").focus(function() { 
       $(this).removeClass("search_init"); 
       this.value = ""; 
      } 
     }); 

〜=“选择具有与含有给定字,通过空格分隔的值指定的属性元素”。这会起作用,但使用内置的类选择器比混入类属性本身更有意义。同样使用^ =,其中“选择具有指定属性的元素,其值与给定字符串完全一致”。

1

应该是一个内衬:

$('tfoo input.search_init').focus(function(e) {$(this).removeClass('search_init').val('');}); 

顺便说一句,你可以用CSS .search_init:focus元类改变造型。