【问题标题】:How to add the same button that was clicked into a list table?如何将单击的相同按钮添加到列表中?
【发布时间】:2015-12-27 01:22:22
【问题描述】:

我创建了在模态中显示特定 gif 的按钮,并且在模态中有一个添加到列表按钮。我创建了一个单击函数,该函数创建了一个包含已完成和已删除按钮的新行。在列表项下,我希望单击的相同按钮具有相同的功能。因此,如果我单击胸部按钮,那么相同的胸部按钮将出现相同的模式显示。任何帮助都会很棒,这是我的代码笔:

https://codepen.io/anon/pen/ZQpRVW

HTML 表格

<div class="col-md-7 col-md-offset-1">
    <div class="addedList">
        <table class="table table-striped table-bordered">
        <tr>
            <th colspan="3"><h2 id="titleName"></h2></th>  
        </tr>
        <tr>
            <td>List Items</td>
          <td class="complete">Completed</td>
          <td class="delete">Delete</td>
        </tr>
       </table>
    </div>
   </div>

jQuery 函数

$("#add").on("click", function() {
      var newRow = $("<tr>");
      var exerciseTd = $("<td>").append();
      var completeBtn = $("<button>").addClass("btn btn-info").append("Completed");
      var completeTd = $("<td>").append(completeBtn);
      var deleteBtn = $("<button>").addClass("btn btn-danger").append("Delete");
      var deleteTd = $("<td>").append(deleteBtn);

    //Appending new row and delete button to table body
    newRow.append(exerciseTd).append(completeTd).append(deleteTd);
    $("tbody").append(newRow);
    });

【问题讨论】:

  • 所以您希望像“Chest”这样的“相同按钮”位于新行和模式中?另外,您是否也希望该行中的按钮也可以打开模式?顺便说一句,删除按钮可以是 ` $('.table').on('click' , '.btn.btn-danger' , function(){ $(this).closest('tr').remove() } );`
  • 是的,我只想在新行上使用相同的内容,并且我希望行上的按钮打开模式。我使用了表格点击功能并附加了一个名为练习的新按钮,它显示了 gif,但是当我点击另一个按钮时,被点击的按钮的模态显示。因此,如果我将胸部按钮添加到列表中,则卧推模式会显示,但是如果我添加或单击腿部按钮,则蹲下 gif 会显示并删除胸部 gif。这是代码笔:codepen.io/anon/pen/ZQpRVW

标签: jquery html twitter-bootstrap-3 bootstrap-modal


【解决方案1】:

我不熟悉引导程序,但对于删除 btn 点击,您可以使用类似

$('.table').on('click' , '.btn.btn-danger' , function(){
  $("#myModal").modal("show");
});

Working Example

直到您的 cmets,您可以通过使用 data 属性将单击按钮的名称传递给您的模态.. 例如.. 如果您单击 Chest 尝试将 data-listitem="Chest" 设置为您的模态和在#add click 事件中使用 .attr('data-listitem') 获取此数据,然后像其他按钮一样附加它

$(document).ready(function(){


    $("#chest").on("click", function() {
       $("h4").html("Bench Press");
        $("p").html("<img id='yo' src='https://45.media.tumblr.com/860edb05e3f8b0bf9b4313a819e87699/tumblr_mi2ud72e931qet17vo1_400.gif'>");
        $("#myModal").attr('data-listitem' , $(this).attr('id')).modal("show");
    });

    $("#legs").on("click", function() {
       $("h4").html("Squat");
        $("p").html("<img id='yo' src='http://i.imgur.com/89ZQmzf.gif'>");
        $("#myModal").attr('data-listitem' , $(this).attr('id')).modal("show");
    });

    $("#shld").on("click", function() {
       $("h4").html("Shoulder Press");
        $("p").html("<img id='yo' src='http://i0.wp.com/thegaysian.com/wp-content/uploads/2015/07/b001.gif?resize=420%2C420'>");
        $("#myModal").attr('data-listitem' , $(this).attr('id')).modal("show");
    });

    $("#bi").on("click", function() {
       $("h4").html("Incline Dumbbell Bicep Curl");
        $("p").html("<img id='yo' src='http://cdn.makeagif.com/media/8-05-2015/OZGZTL.gif'>");
        $("#myModal").attr('data-listitem' , $(this).attr('id')).modal("show");
    });

    $("#tri").on("click", function() {
       $("h4").html("Tricep Dips");
        $("p").html("<img id='yo' src='https://45.media.tumblr.com/a731186fc986346bf6e2b96225e5f1f3/tumblr_njhocrvEo91six5o1o1_500.gif'>");
        $("#myModal").attr('data-listitem' , $(this).attr('id')).modal("show");
    });


    $("#abs").on("click", function() {
       $("h4").html("Standing Ab Twist");
        $("p").html("<img id='yo' src='https://s-media-cache-ak0.pinimg.com/originals/b2/9c/0e/b29c0e0eb56db9cb3451625c13a00766.jpg'>");
        $("#myModal").attr('data-listitem' , $(this).attr('id')).modal("show");
    });




    $("#add").on("click", function() {
      var listitemdata = $(this).closest('.modal').attr('data-listitem');
      var newRow = $("<tr>");
      var exerciseTd = $("<td>").addClass("btn btn-primary").append(listitemdata);
      var completeBtn = $("<button>").addClass("btn btn-info").append("Completed");
      var completeTd = $("<td>").append(completeBtn);
      var deleteBtn = $("<button>").addClass("btn btn-danger").append("Delete");
      var deleteTd = $("<td>").append(deleteBtn);

    //Appending new row and delete button to table body
    newRow.append(exerciseTd).append(completeTd).append(deleteTd);
    $("tbody").append(newRow);
    });
$('.table').on('click' , '.btn.btn-primary' , function(){
  $("#myModal").modal("show");
});
});

Working Demo

注意: $(this).attr('id') 会给你元素的 id 你可以把它改成 $(this).text() 给你的内容这个 元素

【讨论】:

  • @morizvi23 您可以使用 data 属性将您点击的按钮的名称传递给您的 modal .. 例如 .. 如果您点击 Chest 尝试将 data-listitem="Chest" 设置为您的模态并在#add click 事件中使用 .attr('data-listitem') 获取此数据,然后像其他按钮一样附加它
  • 这太棒了,当您在将一个按钮添加到列表项后单击不同的按钮时,这只是另一个错误。因此,如果我将胸部按钮添加到卧推模式显示的列表项,但是如果我点击任何其他按钮,比如腿,胸部模式将被删除,并且腿按钮的模式会显示。我希望添加的任何按钮都显示相应的模式,无论之后是否单击或添加了其他按钮。希望这是有道理的,再次感谢您的帮助,您真的很棒。
  • 是的,谢谢这两个答案都帮了我
【解决方案2】:

这并不理想,但它可以工作(请参阅 cmets 进行解释)https://codepen.io/anon/pen/NxRzJQ
基本上,它将所选练习的 btn ID 和 btn 文本放入一个变量中,然后将这些 attr 添加到按钮中。然后该按钮单击相关的练习。

 // globals 
 var currentBtn
 var currentBtnTxt

 //assign the var on each click
  $("#chest").on("click", function() {
  currentBtn = $(this).attr('id')
  currentBtnTxt = $(this).text() .. .

  //adds the button

  var modalBtn = $("<button>").addClass("btn btn-info exbtn ").attr("data-type", currentBtn).append(currentBtnTxt)
  var exerciseTd = $("<td>").append(modalBtn);
  //delete row
 $('.table').on('click' , '.btn.btn-danger' , function(){
   $(this).closest('tr').remove()
});
 //show modal from list btn
  $('.table').on('click' , '.exbtn' , function(){
   var type = $(this).data('type')
    //hide the add to list button
     $("#add").hide()
    $("#"+type).click()
});

另外,我在模式中添加了一个“取消”按钮

  //this will reset the add to list button when the modal closes
     $("#myModal").on('hide.bs.modal', function(){
    $("#add").show()
 })

【讨论】:

  • 非常感谢!抱歉,对于 jquery 来说还是个新手,无论如何要删除模式的添加列表按钮,一旦它被添加到表中?我不希望用户从表格中添加按钮。
  • 好的,更新它来做到这一点,但同样,这并不理想 - 我会从一开始就重新设计,但这会让你继续前进
  • 谢谢,我正计划重新设计我只是想让功能正常工作
猜你喜欢
  • 1970-01-01
  • 2018-11-06
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 2019-12-23
相关资源
最近更新 更多