如果当前活动元素$(this)或其他预定义元素(例如:div#tooltip)模糊,我想触发一个函数。但到目前为止,我还没有发现如何做到这一点。我试过了:
$(this).add('div#tooltip').live('blur', function(){
$('div#tooltip').hide();
});
想象一下,$(this)将是一个输入字段,例如,预定义的第二个元素将是一个工具提示div,如果其中一个模糊,我希望工具提示隐藏。
修改: div#tooltip包含一个锚点,如果点击它,它不应该使div#tooltip隐藏。
编辑2 :
好的,这是对我的问题的更准确的解释。我有$ .fn.tooltip函数,我将其应用于具有可变类名和id的各种文本输入。因此,此输入在函数中只能称为 $(this)
其次我有工具提示div,它由函数创建。这个div的ID是#tooltip。此工具提示/ div可以包含一些其他元素,例如锚点
单击输入字段(this)时会自动显示工具提示。一旦关闭,即使输入字段再次聚焦,它也不会再次显示。
我想做的是:
当文本输入失去焦点时,必须删除工具提示 EXCEPT 如果光标位于工具提示/ div内,或者是否点击了此div中的元素。
任何?
答案 0 :(得分:1)
像这样:http://jsfiddle.net/uu3zX/7/
HTML:
<input type="text" class="with-tooltip">
<span class="tooltip">?<a style="display:none" href="#">The tip</a></span>
JavaScript的:
$('.with-tooltip').on('focus', function(){
$(this).next().children().show();
});
$('.with-tooltip').on('blur', function(){
$(this).next().children().hide();
});
$('.tooltip').hover(
function(){
$(this).children().show();
},
function(){
$(this).children().hide();
}
);
<强>更新强>
添加了替代解决方案以适应OP请求以使用this
答案 1 :(得分:0)
借用IntoTheVoid的小提琴:您应该将输入和工具提示包装在容器div(或其他容器元素)中,以便在一行中执行此操作:
$('.tooltip, input').on('mouseout', function(){
$(this).parent().children('.tooltip').hide();
}).on('focus mouseover', function(){
$(this).parent().children('.tooltip').show();
});