【发布时间】:2017-02-24 23:37:15
【问题描述】:
对 JQuery 来说非常新,所以我的代码可能不是最好的方法,所以提示会很好......
但问题在于,在 click 函数中创建的 reqObj 似乎从未被解除。如果函数通过并且我 console.log 对象我得到了新创建的对象和所有以前创建的对象。我尝试将对象放在函数之外,但这不起作用。我确信这是一个快速修复。感谢您的帮助。
附: div 是基于传入数据在 javascript 中动态创建的
$(document).on('click', '.profileDiv', function(){
var outer = this;
$("#myModal").modal('toggle');
$('#headerModal').text('Would like to request a session with ' + $(outer).find('#pro_first_name').text());
$(document).on('click', '#modalRequest', function(){
var reqObj = {};
reqObj = {
pro_id : $(outer).attr('id'),
}
console.log(reqObj);
});
});
【问题讨论】:
-
嵌套事件是一种不好的做法,尤其是如果您不以某种方式解除嵌套事件的绑定。在这里,每次单击
.profileDiv时,都会在#modalRequest上绑定一个新的单击事件,而不会取消绑定任何先前的单击事件。无论如何,绝对没有理由将委托事件嵌套到document级别。对你有用的是:$(document).off('click','#modalRequest').on('click', '#modalRequest', function(){...});。但就像说的那样,这只是不好的做法 -
$(outer).attr('id') === outer.id
标签: javascript jquery html scope this