【问题标题】:jQuery className woesjQuery 类名问题
【发布时间】:2010-12-27 20:55:15
【问题描述】:

我正在尝试获取与检查输入的正则表达式匹配的类的名称。

如果我有这个:

 <input type="radio" class="toggle toggle-1" />
 <input type="radio" class="toggle toggle-2" checked="checked" />
 <input type="radio" class="toggle toggle-3" />

我想知道 'toggle-2' 是选中的类。

 $('.toggle:checked').className.match(/toggle\-.+?\b/);

但这会产生“className is undefined”错误。

我认为我的问题是我对 jQuery 对象使用了 className。但我不确定替代方案是什么。

【问题讨论】:

    标签: jquery classname


    【解决方案1】:

    您可以调用 attr 方法来获取所需元素的任何底层属性。

    $('.toggle:checked').attr('class').match(/toggle\-.+?\b/); 
    

    【讨论】:

      【解决方案2】:

      className 是标准的 DOM 成员,而不是 jQuery 包装器属性。通过$('something')[0].className 或jQuery $('something').attr('class') 访问,但不能混合使用。

      您似乎有多个radio​,但没有共享name?那是行不通的,它们都将充当单独的可检查字段。属于一起的所有radio 控件需要具有相同的name(但不同的value​s)并放置在相同的表单中。

      【讨论】:

      • 很好的解释,bobince。谢谢!至于标记,这只是一个例子。我省略了一堆属性。
      • 奇怪的是我从 v1.4.4 开始就开始工作了: var className=$("#myTBody").attr("className");当我升级到 v1.7.1 时它才失败
      • @kalengi:那是由于臭名昭著的attr/prop split jQuery 试图做正确的事情(并最终破坏了一切)。
      【解决方案3】:

      你不需要 jQuery 要查看的所有项目的 Id 吗?

      【讨论】:

      • 不,jQuery 可以使用各种选择器根据几乎任何属性选择元素。
      • 一点也不。您可以使用任何 CSS 选择器(除了大量其他选项)通过 jQuery 在 DOM 中定位元素。
      【解决方案4】:
      $('.toggle:checked').hasClass('toggle-2');
      

      【讨论】:

      • 这没有回答问题,他希望得到“toggle-2”作为答案
      猜你喜欢
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多