2011-11-07 63 views
2

我意识到这个问题应该是多么简单的答案,但我正在用药雾,答案是逃避我。Mouseover/MouseOut jquery

我想把它变成一个简单的函数来显示特定的文本,如果文本框的值在鼠标悬停时为空并在鼠标悬停时清空文本值。

我有什么权利,现在的作品,但非常难看:

$(".disappearOnClick").live('mouseover',function() {  
      if($(this).val() === 'BFA Offset') { 
       $(this).val('') 
      } 
     }); 

    $(".disappearOnClick").live('mouseout',function() { 
      if($(this).val() === '') { 
       $(this).val('BFA Offset') 
      } 
     }); 
+0

你缺少的JavaScript –

+0

不需要分号分号,除非这是所有在1行。 – kamui

+0

你可以使用'hover'而不是'mouseover'和'mouseout'。语法:'$(element).hover(function_on_hover,function_on_mouseout);' –

回答

4

您可以绑定到使用live()方法多个事件 - 所以你可以使用类似这样 - >

$('.disappearOnClick').live('mouseover mouseout', function(event) { 
    if (event.type == 'mouseover') { 
    if($(this).val() === 'BFA Offset') { 
      $(this).val(''); 
     } 
    } else { 
    if($(this).val() === '') { 
      $(this).val('BFA Offset'); 
     } 
    } 
}); 
+0

PLZ你能告诉为什么在$(this).val('')中不需要分号吗? –

+1

@Hira http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf - ** 7.9自动分号插入**和以下 – Yoshi

+0

@Yoshi感谢您的帮助。 –

1
$(".disappearOnClick").mouseover(function(){...}); 

$(".disappearOnClick").mouseout(function(){...}); 

将工作一样好。

+0

但这不适用于类'disappearOnClick'新创建的DOM元素,即你的'live()'功能缺失! – ManseUK

0

试试这个:

$(".disappearOnClick").mouseenter(function (this) { 
    if ($('#'+this.id).val() == 'BFA Offset') 
     $('#'+this.id).val('') 
}).mouseleave(function (this) { 
    if ($('#'+this.id).val() == '') 
     $('#'+this.id).val('BFA Offset') 
}); 
1

您应该使用hover代替:

$(".disappearOnClick").hover(
    function(){ 
     //mouseover 
    }, 
    function(){ 
     //mouseout 
    } 
); 
+0

实时功能如何? – ManseUK

+0

你也可以这样做。你也可以使用'bind'。 –

+0

我的意思是OP使用'live()'函数 - 即它监听新创建的DOM元素上的事件 - 如何使用'live()'和'hover()'? – ManseUK

1

你可以尝试这样的事情(你当然可以改变对焦点/模糊事件,鼠标事件):

http://jsfiddle.net/BD7JA/2/

// <input value="BFA Offset" data-placeholder="BFA Offset" class="is-placeholder" /> 

$('[data-placeholder]').on({ 
    focus: function (evt) { 
    if ($(this).hasClass('is-placeholder')) { 
     $(this).val(''); 
     $(this).removeClass('is-placeholder'); 
    } 
    }, 
    blur: function (evt) { 
    if ($(this).val() === '') { 
     $(this).val($(this).data('placeholder')); 
     $(this).addClass('is-placeholder'); 
    } 
    } 
});