我正在建立一个销售活动门票的系统。现在有大约1000个不同的座位可供选择作为访客。 Maby有一天它将达到5000。
现在我有一个div为每个点,然后一些jQuery用ajax保留现场。因此,我有大约1000个div并且更令我警觉的jQuery选择器的meens在每个div上设置了一个click事件。
对此有更好的方法吗?
我想在按下div时触发ajax,而不是重新加载页面。
答案 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