我有一个小的jquery脚本:
$('.field').blur(function() {
$(this).next().children().hide();
});
隐藏的孩子包含一些链接。这使得无法单击链接(因为它们被隐藏)。什么是适当的解决方案?
这就像我得到的那样接近:
$('.field').blur(function() {
$('*').not('.adress').click(function(e) {
foo = $(this).data('events').click;
if(foo.length <= 1) {
// $(this).next('.spacer').children().removeClass("visible");
}
$(this).unbind(e);
});
});
未注释的行假设是指模糊的字段,但它似乎不起作用。有什么建议吗?
答案 0 :(得分:1)
你可以稍微延迟一下,如下:
$('.field').blur(function() {
var kids = $(this).next().children();
setTimeout(function() { kids.hide(); }, 10);
});
这使您有时间在这些子链接消失之前点击。
答案 1 :(得分:0)
这就是我最终做到的方式:
var curFocus;
$(document).delegate('*','mousedown', function(){
if ((this != curFocus) && // don't bother if this was the previous active element
($(curFocus).is('.field')) && // if it was a .field that was blurred
!($(this).is('.adress'))
) {
$('.' + $(curFocus).attr("id")).removeClass("visible"); // take action based on the blurred element
}
curFocus = this; // log the newly focussed element for the next event
});
答案 2 :(得分:-1)
我相信你可以在这种情况下使用.not('a'):
$('.field').not('a').blur(function() {
$(this).next().children().hide();
});
这未经过测试,因此我不确定这是否有效。