Javascript 在jquery中多次调用click事件
我有以下代码。在这段代码中,我首先将Javascript 在jquery中多次调用click事件,javascript,events,javascript-events,jquery,Javascript,Events,Javascript Events,Jquery,我有以下代码。在这段代码中,我首先将输入字段和按钮添加到#容器。然后我将单击事件附加到按钮。确认。当第一次单击它时,它调用initConfirm方法。在initConfirm中,我将按钮的文本更改为Show,删除类confirm,并将类Show添加到此按钮。然后我将另一个click事件附加到按钮上。show并在单击时调用initShow方法。在initShow方法中,我只是记录了一条消息 问题 此代码的问题是当我第一次单击按钮时。确认按钮,它显示,它将按钮的文本更改为显示,并将类从确认更改为显示
输入
字段和按钮
添加到#容器
。然后我将单击事件附加到按钮。确认。当第一次单击它时,它调用initConfirm
方法。在initConfirm
中,我将按钮的文本更改为Show
,删除类confirm
,并将类Show
添加到此按钮。然后我将另一个click事件附加到按钮上。show
并在单击时调用initShow
方法。在initShow
方法中,我只是记录了一条消息
问题
此代码的问题是当我第一次单击按钮时。确认
按钮,它显示,它将按钮的文本更改为显示
,并将类从确认
更改为显示
,并将单击事件附加到按钮。显示
。它还会注销一次initConfirm
。这是正确的。现在,当我用classshow
单击按钮时,它再次调用initConfirm
方法,然后调用initShow
方法。当我再次点击这个按钮时。然后它再次首先调用initConfirm
,然后再调用initShow
两次。当我多次单击此方法时,此操作将继续。下面是我的控制台的屏幕截图
我想要什么
我希望这个代码能像这样工作。当用户第一次单击.confirm
按钮时,它应该调用initConfirm
方法。当用户单击.show
按钮时,它应该调用initShow
方法,然后每次单击.show
按钮时,它应该继续调用initShow
方法一次
这是我的密码
(function () {
$('#container').append('<input type="text"><button class="confirm" type="button">Confirm</button>');
$('.confirm').on('click', initConfirm);
function initConfirm() {
$('.confirm').text('Show');
$('.confirm').removeClass('confirm').addClass('show');
$('.show').on('click', initShow);
console.log('initConfirm');
}
function initShow () {
console.log('initShow');
}
})();
(函数(){
$('#container')。追加('Confirm');
$('.confirm')。在('click',initConfirm')上;
函数initConfirm(){
$('.confirm').text('Show');
$('.confirm').removeClass('confirm').addClass('show');
$('.show')。在('click',initShow')上;
console.log('initConfirm');
}
函数initShow(){
log('initShow');
}
})();
这是JSFIDLE
单击事件,调用的次数与调用initConfirm()
的次数相同
移动
超出initConfirm()
代码:
$(“#容器”).append('Confirm');
$('.confirm')。在('click',initConfirm')上;
$('.show')。在('click',initShow')上;
函数initConfirm(){
$('.confirm').text('Show');
$('.confirm').removeClass('confirm').addClass('show');
console.log('initConfirm');
}
函数initShow(){
log('initShow');
}
你应该利用授权:
问题是initConfirm
仍然连接到按钮上。我已经做了必要的更改:
$('.show').on('click', initShow);
$('#container').append('<input type="text"><button class="confirm" type="button">Confirm</button>');
$('.confirm').on('click', initConfirm);
$('.show').on('click', initShow);
function initConfirm() {
$('.confirm').text('Show');
$('.confirm').removeClass('confirm').addClass('show');
console.log('initConfirm');
}
function initShow() {
console.log('initShow');
}
function initConfirm() {
$(this).text('Show')
.toggleClass('confirm show');
console.log('initConfirm');
}
function initShow() {
console.log('initShow');
}
$('#container').on('click', '.confirm', initConfirm)
.on('click', '.show', initShow);