2012-04-26 31 views
0

我有一個jquery函數,它發生在具有給定類的所有輸入的焦點上。除了適用時,它適用於所有與該類別相關的輸入。我如何才能將該功能應用於觸發該操作的功能?jquery選擇器:僅對當前元素應用函數

請參閱我JSFiddle

提前幫助(點擊日期的時候,所有的人都清楚。此外,如果您輸入1,其他不返回到默認提示)

非常感謝。

回答

4

使用$(this)

$('.inputDay').focus(function() {   
    if ($(this).val() == "dd") { 
     $(this).val("").css("color", "#000000"); 
    } 
}); 

工作樣本:http://jsfiddle.net/sv9uZ/3/(我定的其他代碼使用也鏈接)

編輯:避免調用$(this)每次(因爲我們使用多次),我們可以將它存儲到局部變量並使用它。感謝Mathletics提出。

$('.inputDay').focus(function() { 
    var item=$(this); 
    if (item.val() == "dd") { 
     item.val("").css("color", "#000000"); 
    } 
}); 
+1

最全面的答案 – 2012-04-26 16:56:04

+1

緩存您的選擇以獲得額外的性能! 'var $ this = $(this);' – Mathletics 2012-04-26 17:01:03

+0

優秀評論。希望我能+2。 – 2012-04-26 17:07:38

1

只要說$(this).val < - 而不是使用class。這將僅適用於當前版本

給予類名稱將適用於所有匹配的名稱。說這句話的,而不是隻適用於目前修改的一個

+0

謝謝,這個工程! – 2012-04-26 16:56:30

+1

看看我在那裏做了什麼! - '這個' – 2012-04-26 16:56:52

1

我知道這已經回答了,但通常我這樣做的時候,我店,我想在輸入的title屬性灰色的值,這樣可以讓你以減少一些代碼,做:

$(document).ready(function() { 
    $('.inputDay, .inputYear').focus(function(e){ 
    $this = $(this); 
    $this.val() == $this.attr('title') ? $this.val('') : '';  
    $this.css("color", "#000"); 
    }).blur(function(){ 
    $this = $(this); 
    if(!$this.val().length){ 
     $this.val($this.attr("title")).css("color", "#999"); 
    } 
    }); 

    $('.inputDay, .inputYear').trigger('blur');  
}); 

這樣你就不必將函數綁定到任何特定的值,比如「dd」或「yyyy」,這樣它就可以被重用了。

演示:http://jsfiddle.net/Wjmav/1/

+0

非常好的解決方案。 – 2012-05-16 10:31:08