3

我需要获取共享点列表范围内的输入的 id。它看起来像下面的代码。

<tr id="idEstablishmentRow">
<td class="ms-formbody" vAlign="top">
<span dir="none">
<span style="vertical-align: middle;">
<input type='text' id='hello' />
</span>
</span>
</td>
</tr>

现在我想获取输入的 id。我努力了:

    var _test = $('#idEstablishmentRow').find('td.ms-formbody');
    var _test1 = _test.find('span.style');

    var _test2 = _test1.find('input');
    var _test3 = _test2.attr('id');
    alert(_test3);
    alert(_test2);

但它没有用。谁能帮助我?

4

3 回答 3

12

你可能想要这个:

var id = $('#idEstablishmentRow td.ms-formbody span input').attr('id');

但是由于您的 HTML 没有任何 id 为idEstablishmentRow的元素,因此很难确定您到底想要什么。

示范

于 2013-02-15T15:21:24.377 回答
1
var inputId = $("span input").attr("id");
于 2013-02-15T15:22:34.427 回答
0

由于此选择器,您的代码段不起作用:var _test1 = _test.find('span.style');

执行此操作时,您尝试查找具有 css 类“样式”而不是 html 属性样式的跨度。因而_test1是空的。

您可以执行以下操作来修复它:var _test1 = _test.find('span[style]');

虽然它不是一个很好的选择器,因为如果您更改 css 以将其从内联中删除,它很可能会中断。

  • 您可以向 span 添加一个类<span class="aclass"></span>。这样,您可以通过以下选择器选择它:var _test1 = _test.find('span.aclass');

  • 您也可以通过其他方式选择它,例如var _test1 = _test.find('span:nth-child(2)');它是否始终是第二个孩子。

这些只是您_test2_test3

  • 您还可以尝试使用var _test1 = _test.find('span input');或选择其中包含输入的所有跨度_test.find('span').children('input')。然后你可以做你的_test3.

请注意,您可以在 1 行中重新组合选择器:

这具有不必在跨度上放置类的优点,因为您实际上不仅查询跨度,而且查询其中包含输入的跨度。

$('tr#idEstablishmentRow td.ms-formbody span input');

//or to get the id directly
$('tr#idEstablishmentRow td.ms-formbody span input').attr('id');
于 2013-02-15T18:27:41.857 回答