Javascript JQuery选择器(在td中的表中查找单元格)

Javascript JQuery选择器(在td中的表中查找单元格),javascript,jquery,css-selectors,Javascript,Jquery,Css Selectors,我有一个HTML表格 <table id="sometable"> <tr> <td> <table class="wTable"> <tr> <td> <input type="radio" name="rdGroup" val="0" /> <

我有一个HTML表格

 <table id="sometable">
 <tr>
   <td>
       <table class="wTable">
            <tr>
                 <td>
                       <input type="radio" name="rdGroup" val="0" /> 
                 </td>
                 <td>
                       <input type="radio" name="rdGroup" val="5" />
                 </td>
                 <td>
                       <input type="radio" name="rdGroup" val="10" />
                 </td>
            </tr>
       </table>
   </td>
 </tr>
 </table>
上面在表的页眉和页脚中添加了一个名为info的类(我不关心其中的任何数据)

在此基础上,我创建了一个td click函数来处理数据:

 $("#dnn_ctr391_Account_ctl00_ctl01_grdItems tr:not(.info) td:nth-child(7)").click(function() { //DO CODE HERE });
在这个点击功能中,我可以访问我需要的其他单元格中的数据:

 var warval = 0;

 warval = $(this).closest("tr").find("input[type=radio]:checked").val();
是否有一种方法可以让我使用相同的编码风格来访问该单元格以获取单选按钮值,然后离开该表返回到它所在的TD,然后使用$(this.closest(“tr”).find()方法访问另一个TD


谢谢你能提供的帮助

我想你在找这样的东西:

$('table#sometable table.wTable td').click(function () {
    var isChecked = $(this).children('input[type=radio]').val();
    //To get 'back to the tr'
    var $warval = $(this).closest("tr");
});

好的,从你在评论中所说的,我希望这是有帮助的:

首先,我建议将表标记更改为divs。这不是强制性的,但它将导致更干净、更易于管理的代码。可能是这样的:

<p>data 1</p>
<p>data 2</p>
<div>
    <input type="radio" name="rdGroup" id="rdGroup_0" value="0" />
    <label for="rdGroup_0">No Warranty</label>
</div>
<div>
    <input type="radio" name="rdGroup" id="rdGroup_5" value="5" />
    <label for="rdGroup_5">1 year Warranty</label>
</div>
<div>
    <input type="radio" name="rdGroup" id="rdGroup_10" value="10" />
    <label for="rdGroup_10">2 year Warranty</label>
</div>
<p>data 3</p>
<div class="footer">Footer</div>
如果在加载包含数据库中存储的数据的表单时需要设置相应的值,则可以使用此函数进行设置(如果您已如上所示设置了收音盒ID):

您可以在此处随意修改代码:


请告诉我这是否有帮助,或者我是否误解了您的问题。

我认为更好的问题是如何在不依赖表格定位的情况下布局站点。此外,如果您试图扩展
收音机的点击区域,请使用带有一些
填充的
标签来代替javascript。HTML和jQuery选择器似乎都过于复杂,这有什么原因吗?另外,你能描述一下你想要达到的效果吗?您的问题目前集中在反复迭代DOM树上,但我觉得可能有更好的方法…@Rorymcrossan我的专业领域是应用程序开发。网络开发对我来说是一个新领域。我不是为网站剥皮的人,所以我会看看他还能做些什么do@Grüse复杂性源于该项目的起源。我几乎可以肯定有更好的方法,但这就是我能够把我所做的阅读和研究结合起来的方法。目前,我正在做的所有jquery都是客户要求的定制附加组件,它不是我们销售的基线web应用程序的一部分。为了保持我们的web应用程序的标准,以便他们能够接收更新,我们选择通过客户端代码添加这些自定义内容,这样就不会影响核心功能了。@Kmauzul好的,很公平。你能描述一下你的代码要实现什么吗?不是用技术术语,而是你的客户会如何向你描述(假设他/她来自非it背景)。我想你指的是
.children
,而不是
.next
。不幸的是,这不起作用。我添加了一个警报,只是想看看当我点击单元格中的任意位置时会发生什么,什么都没有。谢谢,您是否修改了选择器以匹配实际的表id/类?这是一个正在工作的JSFIDLE,其中有一个警告:是的,我已经更改了名称以匹配我的表id和类,但是当我单击单元格时,不会触发任何事件。我看到它在您的JSFIDLE中工作得很好,但不确定是什么阻碍了我的工作。其他jquery错误阻止了它的工作,一旦我解决了这些问题并尝试了它,它就成功了(所以其他看到它的人都不会因此而气馁)。再次感谢汉克斯,我来试试,看看效果如何
$('table#sometable table.wTable td').click(function () {
    var isChecked = $(this).children('input[type=radio]').val();
    //To get 'back to the tr'
    var $warval = $(this).closest("tr");
});
<p>data 1</p>
<p>data 2</p>
<div>
    <input type="radio" name="rdGroup" id="rdGroup_0" value="0" />
    <label for="rdGroup_0">No Warranty</label>
</div>
<div>
    <input type="radio" name="rdGroup" id="rdGroup_5" value="5" />
    <label for="rdGroup_5">1 year Warranty</label>
</div>
<div>
    <input type="radio" name="rdGroup" id="rdGroup_10" value="10" />
    <label for="rdGroup_10">2 year Warranty</label>
</div>
<p>data 3</p>
<div class="footer">Footer</div>
$(function() {
    $('input[type=radio]').change(function() {
        // do whatever needs to be done here when the radio button value changes
        console.log("value '"+this.value+"' was selected for the warranty option");
    });
});​
var setWarrantyOption = function(value) {
    $('#rdGroup_' + value).click();
};