Javascript jquery树遍历问题
在Javascript jquery树遍历问题,javascript,jquery,Javascript,Jquery,在/$(this)后面有一个额外的引号。不需要引用this变量 此外,您的*选择器可以简化为$(':not(.address) 你能提供一个HTML的例子吗 每当我模糊classed.field字段时,我试图删除一个可见的类,除非我单击了class.address元素 这是一个相当棘手的问题。当前代码所做的是在每次使用类字段模糊元素时绑定单击事件处理程序。这不会像您希望的那样工作 我能想到的最好的跨浏览器方式是监听focus事件并记录哪个元素已接收到focus,如果需要,对先前活动的元素采取操作
/$(this
)后面有一个额外的引号。不需要引用this
变量
此外,您的*选择器可以简化为$(':not(.address)
你能提供一个HTML的例子吗
每当我模糊classed.field字段时,我试图删除一个可见的类,除非我单击了class.address元素
这是一个相当棘手的问题。当前代码所做的是在每次使用类字段
模糊元素时绑定单击
事件处理程序。这不会像您希望的那样工作
我能想到的最好的跨浏览器方式是监听focus
事件并记录哪个元素已接收到focus,如果需要,对先前活动的元素采取操作:
$('.field').blur(function() {
(this).next('.spacer').children().removeClass("visible");
});
这可能有相当差的性能。如果您不担心跨浏览器兼容性,尤其是旧版本的兼容性,您可能会感兴趣。说得清楚,您是否打算通过单击
.address
,来检测我是否留下.field
?这是您的问题听起来的意思,但是您的同事在模糊时,de实际上附加了一个.click()
处理程序,因此必须涉及两个单独的点击事件。我想检测我是否删除了一个字段,除非单击.adrescool,I',试图找出哪种浏览器支持活动元素,我们想支持IE7+(和chrome safari firefox,但它们通常优于IE)你知道哪个浏览器支持activeElement吗?一项研究表明,activeElement
在这里实际上对你没有任何帮助,因为它是在调用blur
之后设置的。FWIW,IE是它最可靠的支持者,因为它最初是IE专有功能,被HTML5采用。上面的方法可能是你会得到最好的结果。我试图让它工作,但它没有…你对如何排除故障有什么建议吗?这是一个页面的url:我添加了警报(curFocus);它返回对象HTMLInputElement,并且只有当我聚焦一个字段时才返回。这似乎是错误的?示例:
$('.field').blur(function() {
(this).next('.spacer').children().removeClass("visible");
});
$(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
});
});