jquery树遍历问题

时间:2010-11-05 17:07:23

标签: javascript jquery

$('.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);
        });
});

我正在尝试删除一个“可见的类,每当我模拟一个字段为.field的字段时,除非我单击一个带有类.adress的元素。

字段模糊和地址点击正在按预期工作(我已经厌倦了警报)但没有删除课程,有人知道为什么吗?

如果不删除(“.adress”) - 函数,删除类就可以了! 像这样:

$('.field').blur(function() {
   (this).next('.spacer').children().removeClass("visible");
});

2 个答案:

答案 0 :(得分:0)

//$(this之后你有额外的报价。您不需要引用this变量。

此外,您的*选择器可简化为$(':not(.address)')

您能举例说明您的HTML吗?

答案 1 :(得分:0)

  

我正在尝试删除一个“可见的类,每当我模拟一个字段为.field的字段时,除非我单击一个带有类.adress的元素。

这非常棘手。您当前的代码所做的是绑定是每次使用类click模糊元素时绑定field事件处理程序。这不会像你想要的那样工作。

我能想到的最好的跨浏览器方式是监听focus事件并记录哪个元素已经获得焦点,如果需要,可以对先前活动的元素采取措施:

$(document).ready(function(){
    var curFocus;

    $(document.body).delegate('*','focus', 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')) // the newly focused field is an .adress
        ) {
            $(curFocus).next('.spacer').children().removeClass("visible"); // take action based on the blurred element
        }

        curFocus = this; // log the newly focussed element for the next event
    });
});

这可能性能很差。如果您不担心跨浏览器兼容性,尤其是旧版本,document.activeElement可能会让您感兴趣。