当我使用子onclick禁用它时,我在父进程中再次启用onclick函数时遇到问题。我的预期结果是,当单击父函数时它再次工作,但是它没有工作。所以,下面是我的代码。
function showUserInfo(ini){
$(ini).on("click", showUserInfo);
$(ini).find('.status').html('<i onClick="recentOpen(this)" class="fa fa-eye eyeMark"></i>');
}
function recentOpen(ini){
$(ini).closest('.userIntro').prop("onclick", null);
$(ini).remove();
}
HTML代码如:
<div onClick="showUserInfo(this)" class="userIntro">
<div>Intro</div>
<div class="status"></div>
</div>
答案 0 :(得分:2)
不要混淆事件处理程序的方式。如果我理解正确,就不需要删除任何事件处理函数,只需要防止事件冒泡:
// Attach event handler to userIntro
$('.userIntro').on('click', function(){
// Append FA Icon
$(this).find('.status').html('<i class="fa fa-eye eyeMark">FA</i>');
// Add another handler, this time test whether the target
// is the <i> (using on()) we already appended
}).on('click', '.status > .fa', function(e){
// Prevent the event from bubbling so the previous
// function isn't invoked
e.stopPropagation();
//Remove the icon.
$(this).remove();
});
或者,在附加之前将事件处理程序附加到图标:
$('.userIntro').on('click', function(){
var $fa = $('<i class="fa fa-eye eyeMark">FA</i>').click(function(e){
e.stopPropagation();
$(this).remove();
});
$(this).find('.status').append($fa);
});