关于1000 div的jQuery click事件,优化方法?

时间:2011-07-20 11:47:43

标签: javascript jquery

我正在建立一个销售活动门票的系统。现在有大约1000个不同的座位可供选择作为访客。 Maby有一天它将达到5000。

现在我有一个div为每个点,然后一些jQuery用ajax保留现场。因此,我有大约1000个div并且更令我警觉的jQuery选择器的meens在每个div上设置了一个click事件。

对此有更好的方法吗?

我想在按下div时触发ajax,而不是重新加载页面。

5 个答案:

答案 0 :(得分:8)

使用.delegate()

$("#container").delegate(".child", "click", function(){
    alert("Clicked!");
});

这样你就可以制作一个管理所有div的事件。

答案 1 :(得分:4)

只需使用jQuery委托方法:

$('.theater').delegate('.seat','click',function(event){
  var self = $(event.target);
  console.log(self);
  // self is the '.seat' element that has been clicked.
});

答案 2 :(得分:2)

使用“事件委托”,即将点击事件绑定一次,而不是绑定到每个div,而是绑定到围绕1000个div的div。在处理程序中,您可以通过传递给处理程序的“event”对象检索被单击的div的元素。

答案 3 :(得分:1)

这种方法被称为事件委托,正如Ash解释的那样。 jQuery有几种方法可以帮到这里。 live()和较新的委托() http://api.jquery.com/delegate/更准确一点。

因此,您将一个单击事件绑定到您感兴趣的所有div的元素,然后单击它们会向DOM冒泡以由父级捕获。在这一点上,你可以做你需要的。

答案 4 :(得分:0)

您可能想要检查此SO线程,它可能对您有用。从您的帖子中很难说,但在这种情况下,图像映射可能是您的选择。 Using JQuery hover with HTML image map