【问题标题】:How to test with jquery if an attribute equals ""如果属性等于“”,如何使用jquery进行测试
【发布时间】:2011-08-26 06:03:28
【问题描述】:

我一直在寻找解决方案的高低,我发现许多接近答案但找不到解决我确切问题的东西。

我有 jquery 删除 display: none; 样式属性。

这会将样式属性设置为等于to style="",因为在样式属性中没有设置其他样式。

我如何测试和构建一个包含样式属性设置为style=""的所有元素的数组

注意,有问题的元素是 ID 为 #returnedTable 的表的一部分

td 元素看起来像<td style="" rel="22">

我正在尝试为每个 td 元素返回一个包含在 rel 属性中的数据数组,该元素的样式属性设置为 style=""。请注意,它将与看起来像

的 td 元素混合在一起
<td style="display: none;" rel="24839">

【问题讨论】:

  • 一种更合适的方法是添加一个类,然后使用这些类而不是您尝试的方式进行选择。
  • 这听起来像是一种不明智的方式来找到你想要的元素。由于许多其他原因,样式属性可能为空。如果您要使用 JS 删除 display: none,您应该只用类名或自定义属性标记这些对象,并使用 jQuery 再次找到它们更加万无一失。

标签: jquery arrays attributes selector


【解决方案1】:

您可以像这样获取所有样式设置为“”的元素:

var eles = $("*[style='']");

如果你只想要 rel 属性值,你可以这样做:

var arr = $("*[style='']").map(function() {
    return $(this).attr("rel");
}).get();

Demo.

【讨论】:

  • 感谢您的及时回复。哪种解决方案更好?这个还是第三个?问题是关于选择了多少 dom 以及如何搜索它。我不完全理解所有选择器,它们可以工作。 (帖子是托马拉克的问题)
  • +1,那么 - get()toArray() 有什么区别?
  • @Wes - 将搜索范围缩小到特定容器是个好主意。在我的示例中,我假设您想要搜索整个 DOM 以查找匹配的属性。 Tomalak 的解决方案假定您正在查找 id 为“returnedTable”的表格中的表格单元格。
  • @Wes:这是一个偏好问题。更好地使用你喜欢的东西。在性能方面,它们彼此之间不会有任何不同。
  • @Karim79 && Tomalak,你们都介绍了我从未使用过的 jquery 函数,我现在必须去学习......谢谢大声笑.. 不,真的谢谢你们俩。我想既然这两种解决方案都是正确的,那么您认为什么是资源上最快和最简单的。这将帮助我为其他读者标记正确的答案。
【解决方案2】:
var rels = [];

$("#returnedTable td[style='']").each(function () {
  rels.push( $(this).attr("rel") );
});

【讨论】:

    【解决方案3】:

    为什么不用 jquery 给这些元素一个特定的类呢?然后,您可以轻松地构建其rel 值的数组。

    var rels = [];
    $('#returnedTable tr td.myClass').each(function(){
       rels.push($(this).attr("rel"));
    });
    

    【讨论】:

    • 据我了解,您是在说我删除 display: none 样式属性来添加一个自定义类,该类在每个具有 display: none 的类中都通用?
    • 是的,没错。然后,您可以使用 $('td.myClass').attr('rel');
    • 这是解决问题的更好方法,因为我遇到的问题是您的解决方案将修复的设计缺陷。我为此为你 +1,请将此答案留给其他人阅读。
    【解决方案4】:

    attribute CSS selector 呢?

    [style=""]
    

    快乐编码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-19
      • 2020-06-19
      • 2021-12-13
      • 2020-12-01
      • 1970-01-01
      • 2014-09-13
      • 2019-11-02
      • 1970-01-01
      相关资源
      最近更新 更多