【问题标题】:How to check if DIV element is disabled using jquery如何使用jquery检查DIV元素是否被禁用
【发布时间】:2012-06-08 20:19:31
【问题描述】:

html代码:

div id="divUndo" runat="server"

我在某些条件下使用以下语句在代码隐藏中禁用 divUndo。 VB.NET:

divUndo.disabled=true

如何使用 jquery 检查“divUndo”是否被禁用?

【问题讨论】:

  • jQuery 和 JavaScript 通常在客户端的 HTML 上工作。您的 HTML 是什么样的(查看源代码)?
  • “已禁用”div 在 HTML 中是什么样的?这不是我熟悉的概念。
  • 禁用时代码隐藏如何返回 div?它有禁用属性吗?
  • disabled 属性适用于表单输入元素,而不是 div。
  • @FrédéricHamidi,我认为使用无值属性是在 HTML5 中使用 disabled 属性的正确方法,但在这种情况下它并不重要。这是一个更新的示例jsfiddle.net/96LRu/1(实际上更正确,因为 asp.net 会将其呈现为disabled="disabled"

标签: jquery asp.net html


【解决方案1】:

ASP.NET 允许您在任何 HtmlControl 对象上设置Disabled 属性。在您的示例中,它呈现为

<div id="divUndo" disabled="disabled"><div>

在javascript中可以像这样检查

$('#divUndo').attr('disabled') !== undefined

但根据 W3C

以下元素支持禁用属性:BUTTON、INPUT、 OPTGROUP、OPTION、SELECT 和 TEXTAREA。

因此,它可能无法在不同的浏览器中工作或工作方式不同。您不应该依赖在您的 javascript 或 css 中对 div 使用 disabled 属性。

【讨论】:

    【解决方案2】:

    在标准 ASP.Net Webforms 中,当您将 disabled 属性设置为 true 时,它​​会呈现如下:

    <div id="MainContent_divundo" disabled="disabled">This is Undo!</div>
    

    您可能可以使用标准的 jQuery attr() 方法来读取值。 prop() 很可能不起作用 (jsFiddle)。

    if ($("#MainContent_divundo").attr("disabled") == "disabled")
    {
    }
    

    我不知道你为什么要这样做,所以这很可能是XY Problem

    【讨论】:

      【解决方案3】:

      您不能以 JavaScript(或 HTML,就此而言)可以识别的任何方式禁用 div。它可能是某种奇怪的 .net 属性,但客户端无法识别。

      如果您能解释您的最终目标是什么,我们或许可以为您提供一些替代方案。

      【讨论】:

      • 它将disabled="disabled" 添加到 div 元素中,对我来说这看起来不像是一个奇怪的 .net 属性。
      • @Maksim Vi 但这并不意味着什么。浏览器不会对 div 标签上的该属性做任何事情。
      • 我说“你不能禁用 div”。虽然您是正确的,可以将该属性粘贴在那里,但它在客户端并没有做任何事情。它可能会在 .net 方面做一些事情。
      • 抱歉,您说 JavaScript 无法识别 div 上的 disabled 属性,这是不正确的。它仍然是一个正确的属性,但在一个不支持它的元素上。
      • 我们在这里挑剔语义。但现在是星期五。我很无聊。 ;) 我想 JS 可以识别属性,就像你可以让它读取任何属性一样。我是说具有该属性的 div 不会使其被禁用。我想你可以编写自己的 JS 来处理这些信息。但这是一个不同的话题。
      猜你喜欢
      • 2011-09-20
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 2011-10-12
      • 2012-12-05
      • 1970-01-01
      • 2019-11-06
      相关资源
      最近更新 更多