处理每点击真的不是那么糟糕。不过,你可以优化略有click事件处理程序的代码:
$(document).click(function() {
var id = $(this).prop('id');
if (id !== "startDate" && id !== "endDate") {
$("#startDate").hide();
$("#endDate").hide();
}
});
这可以节省您从每一个点击构建了#startDate和#endDate jQuery的包装,只是做一个比较。
顺便说一句,如果你已经有点击#startDate和/或#endDate事件处理程序,如果你是在调用e.stopPropagation()或从返回false /那些点击事件处理程序,你不需要在$(document).click
处理程序中执行检查。如果在处理完click事件后停止传播,它将不会进入文档级别。例如,假设你在两个处理点击:
$("#startDate").click(function(e) {
e.stopPropagation();
// Handle startDate click logic...
});
$("#endDate").click(function(e) {
// Handle endDate click logic...
return false;
});
$(document).click(function() {
// Clicked element cannot be #startDate or #endDate.
$("#startDate").hide();
$("#endDate").hide();
});
如果使用的是萤火虫,你可以右键点击并检查元素得到的不仅仅是$(文件)一个更好的选择 – 2011-12-19 19:38:27
是否有可能兼而有之开放同一时间?如果是这样,你是问“当你点击两个外面的时候,我怎么知道你想关闭哪一个?” – 2011-12-19 19:43:03