2012-07-16 13 views
0

我有这个JS功能:搜索从生成的HTML表中的特定行,在Javascript

$("#ctl00_ContentPlaceHolder1_Table3 td").click(function() { 

      var varTemp; 
      var tr = $(this).parent(); 
      var temp = ""; 
      for (var i = 0; i < tr.children().length; i++) { 
       if (tr.children().get(i) == this) { 
        var leColumn = i; 
        break; 
       } 
      } 
      var tbody = tr.parent(); 
      for (var j = 0; j < tbody.children().length; j++) { 
       if (tbody.children().get(j) == tr.get(0)) { 
        var leRow = j; 
        break; 
       } 
      } 
      if (leColumn == 13) { 
       var temp = $(this).text() 
       var hwID = temp.split(" "); 
       var hwIDFinal = parseInt(hwID[1]); 
       PageMethods.getDetailHardware(HardwareID, hwIDFinal, CallSuccessUpdateHardware, CallFailedUpdateHardware); 
       __doPostBack('#tblEquipementDetail', '') 
      } 
     }); 

它让我得到一个点击的细胞在生成的表坐标。

感谢这一点,我可以在之后调用PageMethod。

在这个函数结束之前我想要做的是在当前单击我的单元格的行中查找任何选中的复选框。

我已经尝试了一些东西,但迄今没有成功。事实上,我能做的最好的是从整个表中选中所有选中的复选框。

我只想从当前行中选择那些。

下面是生成的表的代码。

<table id="ctl00_ContentPlaceHolder1_Table3" width="100%" style="font-family: 'Microsoft Sans Serif'; color: #000000"> 
      <tr> 
       <td bgcolor="#000066" width="100%" style="color:white;">ID - Hardware</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">Label</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">Status</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">Comment</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">Loan Start Date</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">Loan End Date</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">Assigned by</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">Assignment Date</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">Revocation Date</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">Package</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">USBPhone</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">USBKeypad</td> 
       <td bgcolor="#000066" width="100%" style="color:white;">ScreenPrivacy</td> 
      </tr> 
      <tr> 
       <td>4477</td> 
       <td>HH1234</td> 
       <td>Affected</td> 
       <td></td> 
       <td></td> 
       <td></td> 
       <td>XXXXXXX</td> 
       <td>19/08/2008</td> 
       <td>/</td> 
       <td><input name="ctl00$ContentPlaceHolder1$ctl184" type="checkbox" /></td> 
       <td><input name="ctl00$ContentPlaceHolder1$ctl186" type="checkbox" /></td> 
       <td><input name="ctl00$ContentPlaceHolder1$ctl188" type="checkbox" /></td> 
       <td><input name="ctl00$ContentPlaceHolder1$ctl190" type="checkbox" /></td> 
       <td><a onclick="DetailHardware(1234);return false;" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$ctl192','')" style="font-size:9pt;">Detail 5014</a></td> 
      </tr> 
      <tr> 
       <td>3209</td> 
       <td>XS548</td> 
       <td>Ready</td> 

ETC ...

任何暗示是值得欢迎的,在此先感谢:)

回答

0

你已经抢tr父点击td的,所以只在此搜索:

var row_checkboxes = tr.find('input[type=checkbox]'); 

另外,为了提高效率,不是绑定多个事件,而是每个td一个,最好将事件委托给桌子。效果将是相同的。

$("#ctl00_ContentPlaceHolder1_Table3").on('click', 'td', function() {... 
+0

工程就像一个魅力!然后我循环我的数组搜索复选框。非常感谢 ! – Jan 2012-07-16 12:43:38

0

由于您具有所在表的根目录,因此您可以对表格中的所有复选框执行搜索。就个人而言,如果您使用复选框,它们将具有意义并且同时具有动态性。考虑到这一点,某些复选框应该有一个特定的NAME。

var root = "some string"; 
var chkBoxes = $(root).find("input:checkbox") 
... do whatever you want with chkBoxes being your reference.