JQuery .closest("tr")无效

chr*_*ark 0 html javascript jquery

http://jsfiddle.net/yjxq7bae/1/

我试图在输入标签中选择复选框prop.输入标记的id和名称被重用,所以我必须使用<nobr>文本来缩放dom并获取值.

<tr>
    <td nowrap="true" valign="top" width="190px" class="ms-formlabel">
        <h3 class="ms-standardheader">
        <nobr>Confirmation Sent</nobr>
        </h3>
    </td>
    <td valign="top" class="ms-formbody">
       <span dir="none">
          <input id="ctl00_m_g_ed53ee23_de9d_4105_ba24_00e2a21cef5e_ctl00_ctl05_ctl50_ctl00_ctl00_ctl04_ctl00_ctl00_BooleanField" type="checkbox" name="ctl00$m$g_ed53ee23_de9d_4105_ba24_00e2a21cef5e$ctl00$ctl05$ctl50$ctl00$ctl00$ctl04$ctl00$ctl00$BooleanField" checked="checked" /><br />
       </span>
    </td>
</tr>
<div>Click Here</div>
Run Code Online (Sandbox Code Playgroud)

我尝试过各种可能的方式.如果你注意到.closest()失败,我会从<h3>元素中再增加一个.通过首先更改h3的css,然后尝试隐藏td,小提琴演示了这个负载.

var mop = $('nobr').filter(function () {
    return $(this).text() === 'Confirmation Sent'
}).closest("tr").find("input[type=checkbox]").prop('checked');
alert(typeof mop);

$('nobr:contains(Confirmation Sent)').closest("h3").css("background", "yellow");
$('nobr:contains(Confirmation Sent)').closest("h3").closest("td").hide();


$('div').on("click ", function (event) {
    var toast = $('nobr').filter(function () {
        return $(this).text() === 'Confirmation Sent'
    }).closest("tr").find("input[type='checkbox']").prop('checked');
    alert(typeof toast);
});
Run Code Online (Sandbox Code Playgroud)

nde*_*ore 13

问题是您没有正确的表语法.你错过了行周围的标签<table></table>标签.

由于它不是有效的表格,浏览器会丢弃您的<tr><td>标签:

DOM中生成的HTML结构的屏幕截图

如果你将HTML包装在<table>你的javascript中按预期工作.