jquery选择器:仅将函数应用于当前元素

时间:2012-04-26 16:49:32

标签: jquery-selectors jquery

我有一个jquery函数,它在焦点上发生在给定类的所有输入上。除非应用它,它才能很好地工作,它适用于该类的所有输入。如何仅将该功能应用于触发操作的功能?

请参阅我的JSFiddle

(点击日期时,所有这些都清除。另外如果您输入1,则另一个不会返回默认提示)

非常感谢您的帮助。

3 个答案:

答案 0 :(得分: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 :(得分:1)

只需说$(this).val< - 而不是使用类。这仅适用于当前的

提供课程名称将适用于所有匹配的课程。相反,这样做只适用于当前修改过的

答案 2 :(得分: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/