2014-12-19 43 views
0

我的這段代碼不工作。我做錯了什麼?jQuery this.checked不工作

$("#checkall").click(function() { 
    $("input", myTable.fnGetNodes()).each(function() {      
     $("input", myTable.fnGetNodes()).prop("checked", this.checked); 
    });        
}); 


看來這個。每個函數內的電流值不能擁有的財產進行檢查。我哪裏錯了?

這是我的標記

<table class="table display" id="userviewtable"> 
      <thead> 
       <tr> 
        <th id="checkall"><input type="checkbox" /></th> 
        <th>User ID</th> 
        <th>User Name</th> 
        <th>Staff ID</th> 

       </tr> 
      </thead> 

      <tfoot> 
      <tr> 
       <th><input type="checkbox" /></th> 
       <th>User ID</th> 
       <th>User Name</th> 
       <th>Staff ID</th> 

      </tr> 
      </tfoot> 
     </table> 

而且在劇本方面,我有以下幾點:

var myTable=$("#userviewtable").dataTable(); //to initialize my table with data 
$("#checkall").click(function() { 
     $("input", myTable.fnGetNodes()).each(function() {      
      $("input", myTable.fnGetNodes()).prop("checked", this.checked); 
     });        
    }); 

謝謝

+0

可能重複[檢查一checkbox with jQuery?](http://stackoverflow.com/questions/426258/checking-a-checkbox-with-jquery) –

+0

你不能在這裏使用這個,因爲這代表mytable中的輸入。 –

+0

您不需要'each'循環,將其刪除,您的代碼應該按預期工作。順便說一句,使用onchange事件,而不是onclick –

回答

1

你的代碼應該是:

$("#checkall").change(function() { 
    $("input", myTable.fnGetNodes()).prop("checked", this.checked); 
}); 
+0

這不起作用。也試過了。我正在使用jQuery 2.1.1和數據表1.10。謝謝 – NetizenKing

+0

你應該提供在線樣本來複制你的問題。我猜'$(「輸入」,myTable.fnGetNodes())'返回空對象(我不是一個dataTable用戶,所以不知道在這裏期望什麼)。或者'#checkall'不是複選框。所以如果沒有看到所有相關的HTML標記,很難幫助你更多...順便說一句,你必須在你身邊進行調試,是否觸發了更改事件?什麼返回'$(「input」,myTable.fnGetNodes())'?等等......''不工作'不足以作爲問題解釋 –

+0

Wen我替換this.checked爲「checked」或true,我的表格上的所有複選框都會被檢查。問題是它沒有被取消選中,或者當我取消選中我的標題複選框時未選中。感謝您的支持。 – NetizenKing

0

不知道什麼編公羊應該實現它很難知道你需要知道什麼。但希望這有助於。

每個函數中的this的值將具有由$("input", myTable.fnGetNodes())匹配的元素的值。

如果您想要$("#checkall")匹配的元素的值,那麼您可以將其分配給each函數之外的變量。

您也匹配$("input", myTable.fnGetNodes())兩次。每個將它的功能參數應用於選擇中匹配的每個元素。

作爲替代的each函數內使用this,能夠提供參數,以傳遞給每個功能,第一個是一個索引,並且第二個是相匹配的單獨的元件。

$("#checkall").click(function() { 
    var checked = this.checked; 
    $("input", myTable.fnGetNodes()).each(function (ind,ele) {      
     $(ele).prop("checked", checked); 
    });        
}); 

各不嚴格必要的,如果你想申請同樣簡單的動作來匹配每個元素,作爲函數將被應用到匹配的每一個元素:的

$("#checkall").click(function() { 
    $("input").prop("checked", this.checked); 
});