ajax后重新启动jquery插件,导致事件多次触发
reinitiate jquery plugin after ajax, causes events to fire multiple times
我有一个查询插件,我正在工作,我ajax内容加载后的某些功能。问题是,假设我重新启动它15次,点击事件将触发15次,当它只被点击一次。
有没有办法让它不一直堆积起来?我调用了addToCart onload和itemDetail在ajax返回
之后谢谢!
function addToCart()
{
$(options.add_to_cart).click(function ()
{
event.preventDefault();
var id = $(this).attr('id');
store_item_id_val = id.replace('store-item-id-', '');
var quantity = $('.quantity-' + store_item_id_val);
if (quantity.val() < 1)
{
showError('Please enter a quantity of 1 or more.');
$(quantity).val(1);
return this;
}
$.post($(this).attr('href'),
{ store_item_id: store_item_id_val, quantity: quantity.val() },
function (data)
{
var result = jQuery.parseJSON(data);
renderCart(result);
});
});
return this;
}
function itemDetails()
{
$('.item-details').click(function ()
{
event.preventDefault();
var url = $(this).attr('href');
$.getJSON(url, function (result)
{
$('.modal-title').empty().html(result.title);
$('.modal-content').empty().html(result.html);
$('#modal').slideDown(100);
$('.ui-button').button();
addToCart();
$('.modal-close').click(function ()
{
event.preventDefault();
$('#modal').hide();
});
});
});
根据您提供的代码,我可能会说您还有一些其他代码调用itemDetails()
。每次调用itemDetails()
时,它将click
的另一个事件处理程序添加到.item-details
。你可以这样做:
$(document).ready(function()
{
$('.item-details').click(function ()
{
event.preventDefault();
var url = $(this).attr('href');
$.getJSON(url, function (result)
{
$('.modal-title').empty().html(result.title);
$('.modal-content').empty().html(result.html);
$('#modal').slideDown(100);
$('.ui-button').button();
addToCart();
$('.modal-close').click(function ()
{
event.preventDefault();
$('#modal').hide();
});
});
});
});
这将把事件处理程序放在.item-details
类项目上,并且只触发一次事件。如果您添加和删除了动态.item-details
,您可能应该使用:
$('.item-details').live('click', function() ...
相关文章:
- window.on.scroll事件未启动
- 当我在重新启动cordova应用程序后尝试添加更多数据时,lokijs会丢失数据库和收集中的数据
- 无线电输入更改的jQuery事件未启动
- 重新启动jquery脚本后,角度停止工作
- 一次点击,两次'单击'事件已启动
- Javascript onClick事件未启动
- Chrome内容脚本制作cookie;chrome重新启动时,cookie会被删除.如何使其稳定
- 网格取消事件未启动
- Vue键盘事件未启动
- preventDefault之后的重新启动事件
- WebStorm,使用Node Supervisor(因此不必在每次代码更改后重新启动)
- 重新启动游戏jQuery功能不工作
- 无法将事件重新呈现为fullCalendar
- Web服务器意外退出,正在重新启动新实例
- 事件侦听器,用于完全关闭后重新启动的应用程序
- 培根.js当另一个事件流触发时重新启动缓冲
- Sails JS套接字事件在服务器重新启动后不触发
- Javascript onload事件函数仅在服务器重新启动时起作用
- ajax后重新启动jquery插件,导致事件多次触发
- jQuery取消先前排队的事件处理程序来重新启动CSS动画