如何在第二次单击元素时隐藏元素

发布于 2024-12-04 04:47:34 字数 86 浏览 1 评论 0原文

我想在第一次单击元素后隐藏该元素(使用 jQuery),以便用户在此之后无法看到并单击该元素。

我怎样才能做到这一点?

谢谢。

I want to hide an element after it is first clicked (using jQuery), so that user can't see and click the element after that.

How can I do that?

Thanks.

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

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

发布评论

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

评论(2

ヤ经典坏疍 2024-12-11 04:47:35

非常简单:

$("selector").click(function() { $(this).hide(); });

上面的 "selector" 可以是任何有效的 jQuery 选择器 (例如,".click-to-hide" 使所有具有 click-to-hide 类的元素都具有此行为)。隐藏元素是使用 jQuery hide 方法完成的(还有 < code>show(如果您想让元素稍后再次可见)。

如果您在第一次隐藏元素后不打算对它们执行任何操作,您可能还需要考虑 删除而不是隐藏

更新:要在第二次点击时执行某些操作,您需要记住何时已经对某个元素进行了点击。如果事情不会变得更复杂,您可以使用一个类来实现此目的:

$("selector").click(function() {
    var $this = $(this);
    if ($this.hasClass("clicked-once")) {
        // already been clicked once, hide it
        $this.hide();
    }
    else {
        // first time this is clicked, mark it
        $this.addClass("clicked-once");
    }
});

如果您想计算点击次数,您可以使用 data 函数来存储元素收到的点击量:

$("selector").click(function() {
    var $this = $(this);

    // Current click count is previous click count +1
    var clickCount = ($this.data("click-count") || 0) + 1;

    // Save current click count
    $this.data("click-count", clickCount);

    if (clickCount == 1) {
        $this.hide();
    }
});

Very simply:

$("selector").click(function() { $(this).hide(); });

"selector" above would be any valid jQuery selector (e.g. ".click-to-hide" to make all elements with class click-to-hide have this behavior). Hiding the element is done using the jQuery hide method (there is also show if you want to make the elements visible again later).

If you do not intend to do anything at all with the elements after they are hidden for the first time, you might also want to consider remove instead of hide.

Update: To do something on the second click, you need to remember when a click has already been made on an element. If it's not going to get more complicated than that, you could use a class for this purpose:

$("selector").click(function() {
    var $this = $(this);
    if ($this.hasClass("clicked-once")) {
        // already been clicked once, hide it
        $this.hide();
    }
    else {
        // first time this is clicked, mark it
        $this.addClass("clicked-once");
    }
});

If you want to count the clicks, you can use the data function to store the amount of clicks the element has received:

$("selector").click(function() {
    var $this = $(this);

    // Current click count is previous click count +1
    var clickCount = ($this.data("click-count") || 0) + 1;

    // Save current click count
    $this.data("click-count", clickCount);

    if (clickCount == 1) {
        $this.hide();
    }
});
痞味浪人 2024-12-11 04:47:35

我无法发表评论,但我认为我使用的代码比原始答案更好。

$("#slider").click(function() {
    if ($('#slider').hasClass("clicked-once")) {
			$('#menu').slideUp(1000);
			$('#slider').removeClass("clicked-once");
    }
    else {
			$('#slider').addClass("clicked-once");
			$('#menu').slideDown(1000);
    }
});

它只是更加简单和压缩。

I can't comment, but I think the code I use works better than the original answer.

$("#slider").click(function() {
    if ($('#slider').hasClass("clicked-once")) {
			$('#menu').slideUp(1000);
			$('#slider').removeClass("clicked-once");
    }
    else {
			$('#slider').addClass("clicked-once");
			$('#menu').slideDown(1000);
    }
});

It's just much more simple and compressed.

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