【问题标题】:How can I select a hidden field by value?如何按值选择隐藏字段?
【发布时间】:2010-11-07 03:35:11
【问题描述】:

我有以下由 ASP.NET 转发器生成的 HTML:

<table>
  <tr>
    <td><input type="hidden" name="ItemId" id="ItemId" value="3" /></td>
    <td>Terry</td>
    <td>Deleted</td>
    <td>Low</td>
    <td>Jun 21</td> 
  </tr>
  <!-- rows repeat -->
</table>

如何按值选择特定的隐藏字段,以便随后操作它旁边的列?

【问题讨论】:

  • 为什么不让自己的生活更轻松,通过 ID 获取字段?
  • 如果你没有通过 id 得到它,那么有人可能会出现,向你的页面添加一个输入,如果它们都具有相同的值,那么你可能会得到一个错误;通过 id 进行操作似乎更安全
  • @Richard - 在 ASP.NET 中继器中,每个隐藏字段都会获得不同的 ID(应该如此),例如ctl100_ItemId、ctl101_ItemId 等。通常我们以 $('id$=ItemId') (结尾为)来定位这些 ID,但这在这里并不适用。
  • @Flesh- 我很欣赏 ASP.NET 中嵌套控件增加的复杂性,但是您仍然可以获得它们的客户端 ID(如何做到这一点并不是很明显)。查看 ItemDataBound 事件,e.Item.FindControl 和 ClientID。这将以正确的方式完全满足您的需求,而无需求助于 hack,正如 jcollum 指出的那样,这可能会导致错误。
  • 是的,我明白,我不是黑客,我需要在客户端进行,因为我通过 Web 方法而不是回发(回发正在保存页面上的其他项目)保存更改并且需要反映在 UI 中为用户带来好处。感谢您的建议

标签: jquery jquery-selectors


【解决方案1】:

使用jQuery Selectors,您可以通过与所需值匹配的某个属性来定位您的元素:

$('input[value="Whatever"]');

这样,您将通过等于所需值的属性value 定位input 元素。

EDIT 5/14/2013:根据下面的答案,这不再适用于 jQuery 1.9。

【讨论】:

  • 只是想提一下,但是在您查询的值周围使用引号时可能会出现跨浏览器兼容性问题。 $('input[value=Whatever]') 似乎是进行此类查询的公认方式。
  • 正如 Glyn Jones 所指出的,这不适用于 jQuery 1.9+。请参阅下面的答案以获取替代方案。
  • 从技术上讲,如果您想通过value 属性进行匹配,那么这个答案仍然是正确的。当然,因为 jQuery 喜欢为自己的需要而牺牲选择器规范,所以属性选择器并不总是这样工作。在 1.9+ 中,它们现在根据规范工作,这意味着这将 与标记中声明的 value 属性匹配,而 not.value DOM 属性匹配。
【解决方案2】:

注意:从 jQuery 1.9 开始,input[value="banana"] 选择器不再有效,因为输入的 'value' 在技术上不是属性。您需要使用(更难阅读).filter

例如

$("input").filter(function () {
    return this.value === "banana";
});

另请参阅:jQuery 1.9.1 property selector

【讨论】:

  • 不,它仍然是一个有效的选择器。它只是根据value 属性 正确匹配,而不是.value 属性 现在。
【解决方案3】:
$('input:hidden[value=\'3\']');

【讨论】:

    猜你喜欢
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多