关于Jquery的选择问题

时间:2009-06-13 13:37:31

标签: jquery html checkbox selection

在下面的代码中,当我点击lnkSecc时,我想要在lnkSecc之后的第一个div下面的复选框,其中id是Grup被选中。我该怎么办?

<td>Sipariş</td><td>
<a href="#" id="lnkSecc"  onclick="javascript:SelectSubCheckboxes(this);" >Seç/Kaldır</a>
</td><td>
<div id="Grup">
<table cellspacing="0" cellpadding="0" rules="all" border="0" id="dgrMenu__ctl6_dgrIslem" width="98%">
<tr>
<td align="Center" width="25"><font face="Verdana" size="1">&nbsp;</font></td>
</tr><tr>
<td align="Right"><font face="Verdana" size="1">
<input id="dgrMenu__ctl6_dgrIslem__ctl2_chkSec" type="checkbox" name="dgrMenu:_ctl6:dgrIslem:_ctl2:chkSec" />
</font></td>
</tr>
</table>
</div>
</td>
</tr><tr bgcolor="WhiteSmoke">
<td><b>Fatura</b></td><td><b>
<a href="#" id="lnkSecc"  onclick="javascript:SelectSubCheckboxes(this);" >Seç/Kaldır</a>
</b></td>
<td><b>
<div id="Grup">
</div>
</b></td>

2 个答案:

答案 0 :(得分:3)

我同意其他海报,你真的应该将lnkSeccGrup改为Css类。

如果这些是来自ASP.Net数据网格的静态HTML ID,那么您使用的是模板列。在模板列中更改静态HTML以发出类而不是id。应该相对容易。

如果有效更改,您的代码应如下所示:

// Format all of your hyperlinks when the page finishes loading
$().ready(function() {

// For each hyperlink of CSS class lnkSecc
$(".lnkSecc").click(function(e) {

    // Don't let the hyperlink navigate
    e.preventDefault();

    // Walk UP the DOM to the first TR, and 
    // back down to the Grup CSS class, and then 
    // its child checkboxes
    $(this).parents("tr").find(".Grup input:checkbox").each(function() {

        // Mark the found checkbox as checked
        this.checked = true;

    });

});

});

答案 1 :(得分:0)

首先,ids适用于html页面上的唯一元素。永远不应该有两个具有相同id的元素。您应该使用类属性来区分相似类型/函数的元素。

如果你想遍历DOM,你会想要转到下一个div grup并找到所有后代类型复选框。

请参阅jQuery Traverse/Find api

如果您确实将所有ID更改为类,示例代码将类似于此

 $(document).ready(function() {
    $("a.lnkSecc").click(function() {
        var children = $(this).next('div.Grup').find(':checkbox').get(0).checked=true;
    });
 });