javascript - 简化多个按钮的点击功能

标签 javascript jquery html ajax

我编写了一些代码(进行了大量的谷歌搜索和搜索),单击按钮即可打开一个灯箱,切换一些类并通过 AJAX 将一些 HTML 加载到该灯箱中。我有 4 个按钮,我不想编写 4 次相同的代码,而是创建一个变量来获取每个按钮的 ID、存储 ID,然后加载到相应的 HTML 文档中。我有一个想法,但我只需要一些指导。两个按钮的示例:

        $("#jaxx").click(function(e){
           e.preventDefault();
           $("body").toggleClass("noscroll");
            $.ajax({
                context: $('#lightbox-holder'),
                type: 'POST',
                dataType : "html",
                url : "/template/jaxx-lightbox.html",
                success : function(results) {
                    setTimeout(function() {
                        $('#lightbox-holder').html(results);
                        $('section#lightbox').addClass("open");
                    },100);
                    setTimeout(function() {
                        $('a.xbutton').addClass("open");
                    },300);
                }
            });     
        });

        $("#anisha").click(function(e){
           e.preventDefault();
           $("body").toggleClass("noscroll");
            $.ajax({
                context: $('#lightbox-holder'),
                type: 'POST',
                dataType : "html",
                url : "/template/anisha-lightbox.html",
                success : function(results) {
                    setTimeout(function() {
                        $('#lightbox-holder').html(results);
                        $('section#lightbox').addClass("open");
                    },100);
                    setTimeout(function() {
                        $('a.xbutton').addClass("open");
                    },300);
                }
            });     
        });

顺便说一下,这些是猫,不是脱衣舞娘。

最佳答案

如果除了 ID 之外还为按钮指定一个类,则可以轻松定位所有按钮

<button class="cat" id="jaxx">Jaxx</button>
<button class="cat" id="anisha">Anisha</button>

然后只需在 URL 中使用 ID,如下所示

$(".cat").on('click', function(e) {
    e.preventDefault();

    var id = this.id

    $("body").toggleClass("noscroll");
    $.ajax({
        type: 'POST',
        dataType: "html",
        url: "/template/"+ id +"-lightbox.html",
        success: function(results) {
            setTimeout(function() {
                $('#lightbox-holder').html(results);
                $('#lightbox').addClass("open");
            }, 100);
            setTimeout(function() {
                $('.xbutton').addClass("open");
            }, 300);
        }
    });
});

关于javascript - 简化多个按钮的点击功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36025619/

相关文章:

javascript - 如何使用 iframe 而不是 ajax 重新加载网页的一部分?

jquery - 我的 jquery lightbox 定位困境

html - 使用 CSS 动画交换位置

javascript - 是否可以将 SVG 作为 <svg> 标签导入而不复制粘贴 SVG 代码?

javascript - 单击时按钮不会消失(JavaScript)

javascript - 如何使用 `Backbone.View.events`定义监听自定义 subview 事件?

javascript - 使用 jQuery 生成的表填充输入字段

html - CSS 导航栏悬停未激活

javascript - ExpressJS 路由中间件中的依赖注入(inject)

javascript - 超时完成后多次运行去抖功能