当单击具有文件夹类别的按钮(所有这些按钮都是由 addf 函数创建的(在这个问题中没有说明,因为有些人说原始程序不相关))时,没有响应被单击。我有警报来测试该事件是否被调用。事实并非如此。
$('.folder').click(function() {
alert('works')
fnum = $(this).attr(id);
$('body').html("<button class='btn btn-submit' onclick='addb()'>add a bookmark</button>")
$('body').append(localStorage.getItem(fnum + 'b'));
})
最佳答案
只需附加新元素即可,而不是使用 html
方法,以防止删除事件监听器。另外,您可以只使用 on
而不是 bind
,因为它已被弃用。如果确实需要事件委托(delegate),可以使用:
$('body').on('click', '.f', callback);
我不明白您对 localStorage 的使用,但如果您需要它,请在评论中进一步解释。
我删除了 id 和循环,转而使用类,因为它可以更轻松地处理多个元素。
function addb () { console.log('click') };
$('.f').on('click', function() {
var button = $('<button>add a bookmark</button>');
button.addClass('btn btn-submit');
button.on('click', addb);
$('body').append(button);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="f">Button class 'f'</button>
关于javascript - 如何使用 for 循环进行绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59803440/