2010-02-13 3 views
1

"this"에 "search_init"클래스가 포함되어있는 경우 마크 업 자체에 여러 클래스가 적용되어 있으므로이 클래스를 바꿀 수 있도록 아래 코드를 변경하려고합니다. 나는 ~ =과^=을 시도했지만 실종()에 대한 오류를 준다.jquery change == 포함?

$("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

+0

+1, 당신은'$ (this) .filter (search_init ')로 더 짧게 만들 수 있지만 removeClass ('search_init) .val ('');' – user113716

+0

@patrick 네, 낭비 인 빈 jQuery 객체에서 removeClass 및 val을 실행할 수 있습니다. – PetersenDidIt

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('');}); 

, 당신이 .search_init:focus CSS 메타 클래스와 스타일을 변경할 수 있습니다.