Jquery 如果它是第一次单击元素

发布于 2024-10-11 15:56:06 字数 351 浏览 4 评论 0原文

我需要我的脚本在第一次单击元素时执行某些操作,并在单击 2、3、4 等时继续执行不同的操作,

$('selector').click(function() {  
//I would realy like this variable to be updated  
var click = 0;  
    if (click === 0) {  
        do this  
        var click = 1;  
    } else {  
        do this  
    }
});//end click

我认为它应该依赖于变量,但我不知道如何更新从这里开始的变量任何帮助都会很棒。

I need my script to do something on the first time an element is clicked and continue to do something different on click 2,3,4 and so on

$('selector').click(function() {  
//I would realy like this variable to be updated  
var click = 0;  
    if (click === 0) {  
        do this  
        var click = 1;  
    } else {  
        do this  
    }
});//end click

really I think it should rely on the variables but I can't think of how to update the variable from here on out any help would be awesome.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

别念他 2024-10-18 15:56:06

看一下 jQuery 的 .data() 方法。考虑您的示例:

$('selector').click(function() {
    var $this = $(this),
        clickNum = $this.data('clickNum');

    if (!clickNum) clickNum = 1;

    alert(clickNum);

    $this.data('clickNum', ++clickNum);
});

请参阅此处的工作示例: http://jsfiddle.net/uaaft/

Have a look at jQuery's .data() method. Consider your example:

$('selector').click(function() {
    var $this = $(this),
        clickNum = $this.data('clickNum');

    if (!clickNum) clickNum = 1;

    alert(clickNum);

    $this.data('clickNum', ++clickNum);
});

See a working example here: http://jsfiddle.net/uaaft/

π浅易 2024-10-18 15:56:06

使用 data 来保存元素的状态。

在您的点击处理程序中,

使用

$(this).data('number_of_clicks')

检索值并

$(this).data('number_of_clicks',some_value)

来设置它。

注意:如果尚未设置,$(this).data('number_of_clicks') 将返回 false

编辑:固定链接

Use data to persist your state with the element.

In your click handler,

use

$(this).data('number_of_clicks')

to retrieve the value and

$(this).data('number_of_clicks',some_value)

to set it.

Note: $(this).data('number_of_clicks') will return false if it hasn't been set yet

Edit: fixed link

双手揣兜 2024-10-18 15:56:06

另一种选择可能是拥有两个函数,并使用 one 绑定一个函数$(document).ready() 中的函数(或绑定处理程序的任何位置),并在该函数中,使用 bind 或<代码>单击。

例如

function FirstTime(element) {
   // do stuff the first time round here
   $(element.target).click(AllOtherTimes);
}

function AllOtherTimes(element) {
   // do stuff all subsequent times here
}

$(function() {
    $('selector').one('click', FirstTime);
});

Another alternative might be to have two functions, and bind one using the one function in $(document).ready() (or wherever you are binding your handlers), and in that function, bind the second function to be run for all subsequent clicks using bind or click.

e.g.

function FirstTime(element) {
   // do stuff the first time round here
   $(element.target).click(AllOtherTimes);
}

function AllOtherTimes(element) {
   // do stuff all subsequent times here
}

$(function() {
    $('selector').one('click', FirstTime);
});
你没皮卡萌 2024-10-18 15:56:06

这在普通 Js 中非常简单。这是使用正确的、不同的点击处理程序

const onNextTimes = function(e) {
    // Do this after all but first click
};

node.addEventListener("click", function onFirstTime(e) {
    node.addEventListener("click", onNextTimes);
}, {once : true});

文档CanIUse

This is super easy in vanilla Js. This is using proper, different click handlers

const onNextTimes = function(e) {
    // Do this after all but first click
};

node.addEventListener("click", function onFirstTime(e) {
    node.addEventListener("click", onNextTimes);
}, {once : true});

Documentation, CanIUse

等待圉鍢 2024-10-18 15:56:06

如果您只需要固定行为的序列,您可以这样做:

$('selector').toggle(function(){...}, function(){...}, function(){...}, ...);

切换方法中的事件处理程序将被有序调用。

If you just need sequences of fixed behaviors, you can do this:

$('selector').toggle(function(){...}, function(){...}, function(){...},...);

Event handlers in the toggle method will be called orderly.

淡看悲欢离合 2024-10-18 15:56:06

$('#foo').one('click', function() {
alert('这只显示一次。');
});

这会将点击事件绑定到相应的 Html 元素一次,并在第一次事件渲染后自动取消绑定。

或者您也可以执行以下操作:

$("#foo").bind('click',function(){

// 某些活动

$("#foo").unbind("click");
// 将其绑定到其他一些事件处理程序。

});

$('#foo').one('click', function() {
alert('This will be displayed only once.');
});

this would bind click event to Corresponding Html element once and unbind it automatically after first event rendering.

Or alternatively u could the following:

$("#foo").bind('click',function(){

// Some activity

$("#foo").unbind("click");
// bind it to some other event handler.

});

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文