事件链是如何为多个对象工作的
How does the event chaining works for multiple objects?
当用户点击twitter引导模式窗口按钮上的确认按钮时,我正在对页面执行删除操作。
我有两个按钮:一个允许用户取消操作,另一个用于确认。
当用户点击确认删除按钮时,当模态被隐藏时,我执行我的操作,因此,例如,我可以显示动画并实际删除项目。
如果用户单击了几个项目,但他/她的选择是取消按钮,当他/她单击他/她想要删除的项目时,删除也会在选择取消的元素上执行。
'hidden'事件是否应该在执行后从元素中分离出来?
我知道我可以分离将$('#confirmDeleteModal').on('hidden', function() {
更改为$('#confirmDeleteModal').off('hidden').on('hidden', function() {
的事件链,但我真的会理解为什么会发生这种情况。我错过了什么吗?
代码是:
$(document).ready(function(){
$('.delete').on('click', function() {
var itemID = $(this).data('product-id')
$('#confirmDeleteModal').modal('show');
$('#confirmDelete').on('click', function() {
$('#confirmDeleteModal').on('hidden', function() {
// Here I do my stuff to perform deletion
$('#result').append('This method has been called for ' + itemID + ' <br />' )
});
});
});
});
我希望我已经清楚地暴露了我的问题。我也准备了一个JS Bin: http://jsbin.com/inulaw/5/edit
这里的问题是您每次都将附加侦听器附加到click
和hidden
事件。为了解决这个问题,在再次调用.on('eventname')
之前链接jQuery .off('eventName')
方法。
这是你的代码更新和工作在JS Bin:
$(document).ready(function(){
$('.delete').on('click', function() {
var itemID = $(this).data('product-id')
$('#confirmDeleteModal').modal('show');
$('#confirmDeleteModal').off('hidden'); // must reset from previous
$('#confirmDelete').off('click').on('click', function() {
$('#confirmDeleteModal').on('hidden', function() {
// Here I do my stuff to perform deletion
$('#result').append('This method has been called for ' + itemID + ' <br />' )
});
});
});
});
编辑:我将$('#confirmDeleteModal').off('hidden');
移动到点击事件上方,因此它重置是否点击确认
相关文章:
- 读取在具有IE的工作程序中生成的对象URL
- 我怎样才能让jQuery即使在尚未创建的对象上也能工作
- JSON.stringify没有'在更改的对象上无法按预期工作.如何处理
- 如何让我的正则表达式代码在我的dojo cellWidget对象上工作
- dropable的Over事件是't工作正常,在可拖动对象被拖放到贪婪的可拖动对象上并再次拖动后
- 地图如何在 Ecmascript 6 中使用对象键工作
- 了解 JavaScript 对象实例或工作流
- JavaScript 返回对象未按预期工作
- 如何让、要求和原型协同工作以在 javascript 中制作对象
- 谷歌应用程序脚本-正在尝试使用getUrl.TypeError:在对象工作表中找不到函数getUrl
- 一个对象怎么能像返回自身和另一个对象一样工作
- "键“;jQuery中的对象无法正常工作
- 对象引用的隐式传递是如何工作的
- dojo类对象的工作原理
- app.use(restify.bodyParser())无法工作,因为req对象为空
- 难以理解JavaScript中的基本对象工作
- jquery .after 不对非追加对象工作
- Couchdb _design/doc/_update/push未作为对象工作
- 如何使此CoffeeScript对象工作
- 事件链是如何为多个对象工作的