jquery点击事件问题

我在Internet Explorer和Chrome下遇到了.click()事件的问题。

所以,我有这个filter菜单:

Crop
Resize
[...]

init_filter(filter)最后调用另一个发送ajax req的函数

 function apply(action) { var apply_btn = $("#apply-filter-btn"); var values = null; $(document).ready(function(){ apply_btn.unbind("click"); apply_btn.click(function(){ switch (action) { case "crop": values = "x=" + $("#x").val() + "&y=" + $("#y").val() + "&w=" + $("#w").val() + "&h=" + $("#h").val(); if ($("#w").val() !== "0" && $("#h").val() !== "0") apply_send_req(action, apply_btn, values); break; } }); }); } 

问题是在发送实际请求之前有一段延迟。 这只适用于Firefox …所以我问的是我该怎么做才能防止这种情况发生?

请记住,此代码全部在函数内部,我认为您应该删除文档准备部分。 如果在加载时调用“apply”,请将调用包装在document ready语句中,而不是将其链接到函数内。 这可能会解决您的问题,因为您可能会在它被触发后添加到文档就绪事件中。

 function apply(action) { var apply_btn = $("#apply-filter-btn"); var values = null; apply_btn.unbind("click"); apply_btn.click(function(){ switch (action) { case "crop": values = "x=" + $("#x").val() + "&y=" + $("#y").val() + "&w=" + $("#w").val() + "&h=" + $("#h").val(); if ($("#w").val() !== "0" && $("#h").val() !== "0") apply_send_req(action, apply_btn, values); break; } }); } 

如果您没有在文档就绪部分中定义您的apply_btn ,那么只是在黑暗中刺伤,否则存在可能不存在的风险且您的var将是未定义的?

 $(document).ready(function(){ var apply_btn = $("#apply-filter-btn"); // <-- inside .ready()