2015-08-28 14 views
1

我之前的問題是this,如果用戶選擇具有'Stock Available = null或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」)按鈕,當且僅當checkedRows []包含至少一個記錄。我搜索了以上的bootstrap事件,但無法理解它。

回答

0

看看jQuery的on事件如何將事件附加

$(SELECTOR).on(EVENT,CALLBACK) 

每當EVENT發生了,你用SELECTORCALLBACK函數被調用選擇的元素。 $(document).ready(function(){})$(document).on('ready',function(){});的簡寫。所以當ready事件發生時,調用回調get。請注意,'ready'事件僅在頁面首次加載時觸發一次,因此回調只會被調用一次。現在你在ready回調中有你的購物車hiddin按鈕邏輯,所以它只能被調用一次。

$(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.tableuncheck.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 
+0

好,知道了。但是關於第一行問題'Stock Available = null或0'呢? –

+0

不能在Firefox中工作 –

0

關於如果它取消了行,「庫存= null或0,我假設你正在使用的bootstrap-table by wenzhixin和你的數據有一個像你提到在你的問題row.id

我的做法是這樣的一個唯一的ID: 1.定義表的唯一ID,當您加載數據 2的oncheck:檢查使用行如果Stock_Available爲空或0 3.如果是使用的方法

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

下面是解http://jsfiddle.net/pacitwizere/xjvp8xq0/5/