3

我有以下困境:我的 HTML 就是这样(这存在于 PL/SQL 应用程序中。):

<table id="search_result_table">
<tr>

<input type=radio name="pv_select" value="'||lv_spriden_id||'"/>
<font face="Calibri" size=3><td id="spriden_id"     name="spriden_id">'||lv_spriden_id||'</td></font>'
<font face="Calibri" size=3><td id="last_name" class="c_last_name"     name="last_name">'||lv_spriden_last_name||'</td></font>
<font face="Calibri" size=3><td id="first_name" class = "c_first_name"     name="first_name">'||lv_spriden_first_name||'</td></font>
</tr>
</table>

我可以通过以下方式获取选定的单选按钮值:

$("input[name=pv_select]:checked").val()

但是,我希望能够获取“last_name”列单元格的值(存在于单选按钮旁边的表中)。如何通过 jQuery 检索此值(通过单选按钮选择的行)?

我已经尝试了几件事,但没有一个有效:

$("input[name=pv_select]:checked").parent().siblings("td:eq(1)").text());    

提前致谢。

4

3 回答 3

2

HTML 无效;不确定这是否会破坏您的 DOM 树,从而使 jQuery 在尝试遍历损坏的 DOM 树时感到困惑。

这是有效的 HTML:

<table id="search_result_table">
    <tr>
        <td>
            <input type=radio name="pv_select" value="'||lv_spriden_id||'"/>
        </td>
        <td id="spriden_id" name="spriden_id"><font face="Calibri" size=3>'||lv_spriden_id||'</font></td>
        <td id="last_name" class="c_last_name" name="last_name"><font face="Calibri" size=3>'||lv_spriden_last_name||'</font></td>
        <td id="first_name" class = "c_first_name" name="first_name"><font face="Calibri" size=3>'||lv_spriden_first_name||'</font></td>
    </tr>
</table>

和 jQuery 来获取与选中的单选按钮在同一行中的“姓氏”表格单元格的值:

$("input[name=pv_select]:checked").parent().siblings("td.c_last_name").text());

(我说 HTML 是有效的:该id属性的值在 HTML 页面中是唯一的,因此如果您有多行使用表格单元格的相同 id 属性,那也是无效的。)

于 2010-01-19T20:34:45.470 回答
0

您的选择器在通用表上工作,在td中输入,在另一个td中输入姓氏文本

也许你的问题是在提交之后声明了姓氏,所以你应该尝试修改选择器

$("input[name=pv_select]:checked").parent().siblings("td:eq(0)").text();

我刚刚更改了兄弟的索引(如果我的表转储正确,您的 .siblings("td:eq(1)") 是名字,eq(0) 应该是姓氏

只是一个建议。。

编辑

当您发布您的 html 摘录时,我意识到您不需要检查收音机父级的兄弟元素。由于它的父级是tr并且 table 中 tr 的兄弟姐妹只是另一个表行。

您可能会考虑使用遍历函数.next()移动到 DOM 中的下一个元素

很遗憾,我无法在 FF 中对此进行足够的测试(或者仅仅因为 Firebug / jquery ext。),但这是您确切要求的代码(获取无线电输入的下一个元素):

$('input[name="pv_select"]:checked').next();

唯一的问题是,下一个元素是字体元素,我似乎无法在 FF 中正确呈现(并且不驻留在表格行中 - 它直接显示在 FireBug 检查器的主体内),所以.children()找不到或者你试图找到的任何 td

于 2010-01-19T17:18:59.193 回答
0

我刚刚意识到这适用于 Firefox,但不适用于 IE。因此,我将分析可能导致此浏览器在一个浏览器而不是另一个浏览器中失败的原因。

于 2010-01-19T20:08:32.390 回答