我有一个按钮。当我点击它时,我会将一些按钮添加到DOM中。
我的问题是,那些我添加的按钮会触发多次。
$(el).on('click', function (e) {
key();
});
function key() {
$(document).on('click', '#key li', function () {
console.log($(this));
});
}
第一次调用key()
时,console.log
只会触发一次
第二次调用key()
时,console.log
会触发两次
以此类推
我尝试添加$(document).find('#key li').unbind('click')
,但似乎没有起作用
有什么想法吗?
编辑:
这里是一个jsfiddle示例(如下所示)。
$('button').on('click', function () {
$('.cont').remove();
$('.container').remove();
var html = '<button class="cont">click</button><div class="container">placeholder</div>';
$('body').append(html);
key();
});
$(document).on('click', '.cont', function () {
var html = '<div id="but_placeholder"><button class="one">1</button><button class="two">2</button><button class="three">3</button></div>';
$('.container').html(html);
});
function key() {
$(document).on('click', '#but_placeholder button', function () {
$('input').val($('input').val() + $(this).html());
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="input" />
<button>test</button>
您会注意到第二次执行此过程时,文本会增加一倍。
.on
更改为.bind
,问题就解决了。 - Kiril Belah