Javascript 如何使jQuery click()函数只运行一次

Javascript 如何使jQuery click()函数只运行一次,javascript,jquery,Javascript,Jquery,我有一个场景,我希望在单击按钮时发生一个事件,但在第二次单击按钮时,我希望有一个不同的行为。下面是一个正在发生的事情的例子: $('.click')。不是('.clicked')。单击(函数(){ $(this.addClass('clicked'); $('p class=“test”>test')。在(本)之后插入; }); 。单击{ 颜色:红色; } 使用哪种类型的CSS选择器并不重要,因为它只执行一次。因此,您正在为类为的每个标记添加一个事件侦听器。单击,不单击。单击。你应该这样做:

我有一个场景,我希望在单击按钮时发生一个事件,但在第二次单击按钮时,我希望有一个不同的行为。下面是一个正在发生的事情的例子:

$('.click')。不是('.clicked')。单击(函数(){
$(this.addClass('clicked');
$('p class=“test”>test

')。在(本)之后插入; });
。单击{
颜色:红色;
}

使用哪种类型的CSS选择器并不重要,因为它只执行一次。因此,您正在为类为
的每个标记添加一个事件侦听器。单击
,不单击
。单击
。你应该这样做:

$(文档)。在('click','上。单击:未(.clicked'),函数(){
$(this.addClass('clicked');
$('p class=“test”>test

')。在(本)之后插入; });
。单击{
颜色:红色;
}

使用哪种类型的CSS选择器并不重要,因为它只执行一次。因此,您正在为类为
的每个标记添加一个事件侦听器。单击
,不单击
。单击
。你应该这样做:

$(文档)。在('click','上。单击:未(.clicked'),函数(){
$(this.addClass('clicked');
$('p class=“test”>test

')。在(本)之后插入; });
。单击{
颜色:红色;
}


为什么不使用
$('.click').one()
代替…?使用$(“.click:not(.clicked)”@liquidcrome我相信这不会起作用,因为当第二次单击时,事件侦听器将已经绑定到元素。@Circle B请在适用时接受答案。为什么不使用
$('.click').one()
代替…?使用$(“.click:未(.clicked)”)@Liquidchrome我相信这是行不通的,因为当第二次单击时,事件侦听器将已绑定到元素。@圈B请在适用时接受答案。答案确实不错,但为什么要把它做得如此过分呢?当我们只需要事件处理程序工作一次时,完全不需要注入类。代码如下所示:st变得很难阅读,也很难维护。但我承认,在一篇评论中,它看起来会更加复杂和糟糕。代码模糊带来的工作安全:)@davidkonrad我认为这是一个小问题,也是一个更大问题的可验证的例子。但正如你所说,只阅读标题,使用
one
@D会更好你就是那个人!项目的其余部分(以及我想要点击
类的原因)我希望在单击后能够更改样式、行为等。然后,当我单击另一个类时,我将删除该类。答案确实很好,但为什么要做得这么过分呢?当我们只需要事件处理程序工作一次时,完全不需要注入类。代码变得很难阅读,也很难维护是的。但在一篇评论中,我承认这看起来会更复杂更糟糕。代码模糊性带来的工作安全:)@davidkonrad我认为这是一个小问题,也是一个更大问题的可验证的例子。但正如你所说的,只看标题,如果有
one
@Diego你就是那个人!项目的其余部分(我希望单击
类的原因是我希望能够在单击后更改样式、行为等。然后,我将在单击另一个类时删除该类。