1

我之前的问题是这个,如果用户选择的行具有'Stock Available=null or 0',我想取消选中选中的行。现在我的jQuery代码是:

$(document).ready(function()
{
    $("#add_cart_btn").hide();
    var json;
    var checkedRows = [];
    $('#table-style').on('check.bs.table', function (e, row) {
      checkedRows.push({id: row.id});
      $("#add_cart_btn").show();
    });

    $('#table-style').on('uncheck.bs.table', function (e, row) {
      $.each(checkedRows, function(index, value) {
        if (value.id === row.id) {
          checkedRows.splice(index,1);
        }
      });
    });
     /*if(checkedRows.length < 0) {
        // does not exist
        $("#add_cart_btn").hide();
      }
      else {
        // does exist
        $("#add_cart_btn").show();
      }*/

});

在这里,我还尝试显示 $("#add_cart_btn") 按钮iff checkedRows[] 至少包含一条记录。我在上面搜索了引导事件,但无法理解。

4

2 回答 2

1

即将取消选中行,如果它有'Stock Available=null 或 0,我假设您正在使用wenzhixin 的引导表,并且您的数据有一个唯一的 id,就像您在问题中提到的row.id

我的方法是这样的: 1. 在加载数据时定义表的唯一 ID 2. oncheck :使用行检查 Stock_Available 是否为空或 0 3. 如果是,请使用该方法

$("#table").bootstrapTable("uncheckBy", { field: "Stock_Available", values: [row.id] })

这是解决方案http://jsfiddle.net/pacitwizere/xjvp8xq0/5/

于 2018-01-25T06:40:11.920 回答
0

看看jQuery on event是如何附加事件的

$(SELECTOR).on(EVENT,CALLBACK)

每当您使用该函数EVENT选择的元素上发生这种情况时,就会被调用。是 的简写。因此,当事件发生时,回调 get 被调用。请注意,“就绪”事件仅在页面首次加载时触发一次,因此回调只会被调用一次。现在你的购物车隐藏按钮逻辑在就绪回调中,所以它只被调用一次。SELECTORCALLBACK$(document).ready(function(){})$(document).on('ready',function(){});ready

   $(document).('on',function(){
   var checkedRows = [];
   //[].length === 0
   if(checkedRows.length === 0) {
    // does not exist
    $("#add_cart_btn").hide();
  }
  else {
    // does exist
    $("#add_cart_btn").show();
  }
  });

它将评估checkedRows为空并隐藏购物车按钮。不会再次调用此代码,因此永远不会显示购物车按钮。您正在侦听的两个引导事件是check.bs.table并且uncheck.bs.table在发生检查/取消检查时触发。请注意,这些事件仅在用户交互之后发生,因此在第一次加载页面时不会调用这两个回调。

$(SELECTOR).on(EVENT,CALLBACK)
$('#table-style').on('check.bs.table', function (e, row) {
    //This event fires every time a checkbox is checked
});
$('#table-style').on('uncheck.bs.table', function (e, row) {
    //This event fires every time a checkbox is unchecked
});

所以你的算法将是这样的:

on page load:no checkboxes are checked so hide the cart button
on check: a checkbox is checked so show the cart button
on uncheck: if the checkedRows array is empty hide the cart button
于 2015-08-31T12:40:54.143 回答