2013-08-01 74 views
0

我想显示一个工具提示,如果一个searchfield得到一个空值。 显示工具提示后,我想要将点击功能绑定到正文以再次隐藏工具提示。但由于某些原因,将点击函数添加到绑定命令后,工具提示甚至不会出现。我已经检查过控制台,但没有任何结果。 这里是我的代码:jQuery点击+如果+绑定

$('#search_top .search_click').click(function() { 
    if($('#search_top #suchfeld').val() == '') { 
     $('.search_tooltip, .search_tooltip:after').css('display', 'block'); 
     $('.search_tooltip, .search_tooltip:after').addClass('active'); 
     $('body').bind('click', closeTip); 
    } 
    else { 
     $('#search_top').submit(); 
    } 
}); 


function closeTip() { 
     $('.search_tooltip, .search_tooltip:after').css('display', 'none'); 
} 

任何人都有想法吗?

+0

别t忘记取消绑定closeTip函数中的closeTip点击处理程序。 – BNL

+0

http://webdesignledger.com/tips/9-jquery-mistakes-you-shouldnt-commit 4)5) – Virus721

回答

1

我不会使用的代码中,这类但是似乎你正在寻找:

$('#search_top .search_click').click(function (e) { 
    e.stopPropagation(); 
    if ($('#search_top #suchfeld').val() == '') { 
     $('.search_tooltip').show().addClass('active'); 
    } else { 
     $('#search_top').submit(); 
    } 
}); 

$(function() { 
    $('body').bind('click', closeTip); 
}); 

function closeTip() { 
     $('.search_tooltip').hide(); 
} 
+0

曾为完美的感谢。我没有得到的是,为什么绑定在工具提示打开后触发closeTip函数的函数? – Basti

+1

因为当点击.search_click事件传播到body时,然后关闭工具提示。这就是为什么我使用'e.stopPropagation();' –

+0

不知道这个功能,这非常酷,非常感谢! :-) – Basti

0

:before:after(和其他伪元素)不使用JavaScript访问。你应该改变类的父对象在以下精神:

div:before { 
    content: 'Lorem ipsum'; 
    display: none; 
} 

div.active:before { 
    display: block; 
} 
+0

你确定吗?因为我的这个工作没有任何问题: $('。search_tooltip,.search_tooltip:after')。css('display','block'); ('。search_tooltip,.search_tooltip:after')。addClass('active'); – Basti

+0

已经有关于它的一些问题已经包括[这一个](http://stackoverflow.com/questions/17108475/cant-edit-css-styles-for-before-after) – adrenalin