2014-12-30 37 views
1

行的數量是動態的,所以我不能在該行的名稱固定,這裏是小提琴:http://jsfiddle.net/1vp29wxq/1/如何動態地點擊一個標籤來檢查整個行?

$('.NameOfSensor').on("click", function() { 
    var tr = $(this).parents('tr:first'); 
    var thisRow = tr.find(".rowMode"); 

    var checkChecked = $("input[class='rowMode']:checkbox:checked"); 
    var checkBoxes = $("input[class='rowMode']:checkbox"); 

    if (checkChecked.length < checkBoxes.length) 
    { 
     checkBoxes.prop("checked", true); 
    } 
    else { 
     checkBoxes.prop("checked", false); 
    } 

}); 

我從得到的是所有的複選框被選中,但我只是想那些被點擊的行。此外,無論我嘗試過,我似乎不能融入我創建的2個變量(tr和thisRow),我可以得到一些幫助嗎?此外,複選框的列數總是6(有時我只是隱藏它們)。

回答

1

更改您的代碼到這一點:

$('.NameOfSensor').on("click", function() { 
     var tr = $(this).closest('tr'); 

     var checkChecked = $(tr).find("input[class='rowMode']:checkbox:checked"); 
     var checkBoxes = $(tr).find("input[class='rowMode']:checkbox"); 

     if (checkChecked.length < checkBoxes.length) 
     { 
      checkBoxes.prop("checked", true); 
     } 
     else { 
      checkBoxes.prop("checked", false); 
     } 

    }); 

你的選擇是錯誤的,並得到了所有行。

+0

爲什麼這個答案downvoted? – VisioN

+0

它不是我,但我已經測試了其他答案,它的工作原理,我只是測試你的,它也適用。 – Vrankela

+0

我應該獎勵誰,因爲兩個答案都是正確的,並且以秒分隔? – Vrankela

1

搜索點擊的行中的複選框:

var tr = $(this).closest('tr'); // fast alternative to `.parents('xxx:first')` 

var checkChecked = $("input[class='rowMode']:checkbox:checked", tr), 
    checkBoxes = $("input[class='rowMode']:checkbox", tr); 

DEMO:http://jsfiddle.net/1vp29wxq/2/

+0

哈哈它說我可以在8分鐘內接受答案:D 非常感謝你 – Vrankela

+0

我應該獎誰,因爲兩個答案都是正確的,並且是幾秒鐘分開的? – Vrankela

+0

@Vrankela這取決於你決定哪個答案更適合你':)'。 – VisioN

相關問題