【问题标题】:how to remove data and then add it again jquery js如何删除数据然后再次添加它 jquery js
【发布时间】:2019-12-03 08:38:26
【问题描述】:

我想要实现的是,当我单击“添加到我的住宿”按钮时,它将加载数据的名称和价格。然后单击“添加到我的住宿”后,它将自动转换为“删除”按钮。如果我单击“删除”按钮,它将删除已加载的数据。然后,如果我再次单击“添加到我的住宿”,它将再次加载数据。你能给我一个关于如何做到这一点的想法吗 这是我的 AddOns JS 的代码及其删除按钮 js

$(document).ready(function(){
    $(".addons").on("click", function(event) {
        event.preventDefault();

        var $this = $(this);
        var id = $(this).data('addon-id');
        name = $(this).data('name');
        price = $(this).data('price');

        console.log(id);

        $this.addClass('is-hidden');
        $('.removebtn[data-addon-id="' + id + '"]').removeClass('is-hidden');
        if(id != '')

            {

                    $.ajax(
                {
                    type:"POST",
                    url : "Pages/addonajax",
                    data:{id:id,
                        name:name,
                        price:price},


                    success:function(data)
                    {
                            console.dir(data);
                            if (data) {

                            var item = $('<li data-itemprice="'+price+'">'+name+' : '+price+'</li>');
                            $("#test4").append(item);


                        }
                        else {

                        }
                    }
                });
            }
});

我的 removebtn js

$('.removebtn').on("click", function(){
        var $this = $(this);
        var id = $(this).data('addon-id');
        $this.addClass('is-hidden');
        $('.addons[data-addon-id="' + id + '"]').removeClass('is-hidden');
    });

我的 html 按钮及其删除

<button data-name = "Airport Transfer" data-price = "4300"  class="addons addon-btn trans_200" data-addon-id ="1">ADD TO MY STAY</button>
      <button class="removebtn remove-btn  is-hidden trans_200" data-addon-id ="1" >REMOVE</button>

is-hidden 是一个基于我的 css 的类,它有 display:none; 这是点击add to my stay btn后显示数据的div id

 <div id = "test4"><span></span></div>

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    您应该使用 element.classList.toggleis-hidden 类在添加和删除按钮之间切换。

    var addBtn = document.getElementById("add");
    var removeBtn = document.getElementById("remove");
    var contentDiv = document.getElementById("content");
    
    addBtn.onclick = () => {
      // load data
      contentDiv.innerHTML = "YOUR_DATA";
      addBtn.classList.toggle("d-none");
      removeBtn.classList.toggle("d-none");
    };
    
    removeBtn.onclick = () => {
      contentDiv.innerHTML = "";
      addBtn.classList.toggle("d-none");
      removeBtn.classList.toggle("d-none");
    };
    .d-none {
      display: none;
    }
    <button id="add">Add</button>
    <button id="remove" class="d-none">Remove</button>
    <div id="content"></div>

    【讨论】:

    • 例如,我有 2 个按钮,每个按钮都有它们的数据,我都单击了它们,例如,在单击添加到我的住宿后,我单击了 button2 上的删除按钮。它还会删除我 button1 上的数据吗?
    • @JedJamir 数据被contentDiv.innerHTML = ""; 行删除。您应该了解我的一小段代码如何在您的环境中重现它。然后,如果您想要另一个按钮来删除您的数据,您将使用与第一个按钮相同的代码。
    • @Don'tPanic 你应该知道,jQuery 只是 Javascript 的一个工具,而且纯 Javascript 效率更高,它总是一个更好的选择。您可以将来自document.getElementById("...") 的所有元素替换为$("#...")[0]
    • @robinvrd 我可以请你通过 jquery 代码给我一个例子吗?
    • @robinvrd 你没抓住重点。如果您想说服 OP 切换,请继续。同时,他们正在使用 jQuery - 如果您希望您的答案有帮助,它也应该有帮助。
    【解决方案2】:

    在 jQuery 中,您可以使用 $("...").toggleClass("is-hidden") 在添加和删除按钮之间切换。

    您可以使用.empty() 清除您的数据并使用.html("your_data") 进行设置。

    var addBtn = $("#add");
    var removeBtn = $("#remove");
    var contentDiv = $("#content");
    
    addBtn.click(() => {
      // load data
      contentDiv.html("YOUR_DATA");
      addBtn.toggleClass("d-none");
      removeBtn.toggleClass("d-none");
    });
    
    removeBtn.click(() => {
      contentDiv.empty();
      addBtn.toggleClass("d-none");
      removeBtn.toggleClass("d-none");
    });
    .d-none {
      display: none;
    }
    <button id="add">Add</button>
    <button id="remove" class="d-none">Remove</button>
    <div id="content"></div>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    【讨论】:

    • 我怎样才能像这样显示输出“$("#test4").append(item);"在 contentDiv.html("") 中?
    • @JedJamir My contentDiv.html("") 是我在示例中用于将数据附加到 div 的方式,但您可以改用 $("#test4").append(item);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    相关资源
    最近更新 更多