【问题标题】:Condition for SPAN content using jQuery使用 jQuery 的 SPAN 内容的条件
【发布时间】:2012-06-29 07:19:46
【问题描述】:

我正在尝试设置一个条件,即如果 SPAN 的“total-items”CLASS = 12 的内容,则会弹出警报。

这是我的 HTML 代码:

<span class="total-items">12</span>​

这是我的 jQuery 代码:

if($('.total-items').html == 12){
    alert("Test");
}    ​​

我想也许我应该使用 parseInt 函数?不知道怎么做。任何帮助将不胜感激。

【问题讨论】:

  • 我想你想做if($('.total-items').text() === 12)
  • 那永远行不通。 === 需要一个数字,.text() 永远不会返回一个数字。
  • 请见谅.. 忘了单引号

标签: javascript jquery html


【解决方案1】:
if ( $('.total-items' ).text() === '12' )

如果 SPAN 的内容可能包含前导或尾随空格,则必须在将其与所需值进行比较之前将其删除:

if ( $.trim( $('.total-items' ).text() ) === '12' )

另外,考虑缓存对该 SPAN 的引用,这样您就不必重复查询它。 (如果您需要多次检查,请执行此操作。)

var $totalItems = $('.total-items' );

然后

if ( $totalItems.text() === '12' )

【讨论】:

  • 这可行,但.text() 最适合这种类型的比较。 (如果这个span中有子元素怎么办?)
  • @MilkyWayJoe 是的,text() 更合适。
  • 如果是完全匹配,那并不重要。但如果考虑到&lt;span&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/span&gt; 之类的东西,那么.text() 很可能是一个更好的选择。
  • 谢谢! Stackoverflow 很棒。你们等了2分钟就给了我答复。再次感谢。
  • @MilkyWayJoe - According to the FAQ,在接受任何答案之前,应该等待至少 24 到 48 小时。 ;)
【解决方案2】:

这样做:

if( +$('.total-items').text() === 12){
    alert("Test");
}

这将在文本为 12 时创建一个弹出窗口。

【讨论】:

  • 我只想指出text()是一个get方法,所以你得称它为开闭括号。还有一个诚实的问题:加号是什么意思?
  • @MilkyWayJoe - 糟糕,忘记了()+ 会将所有内容变成Number。如果不是数字,它将返回NaN
  • 酷,不知道。谢谢
【解决方案3】:

我建议不要像这样从span 的文本中解析12。您这样做的方式使您看起来好像要在页面上显示数字十二。依赖这样的演示项目中的数据是一个坏主意。如果您决定希望跨度的内容为Total items: 12,该怎么办?您将很难从中解析出 12 个,或者您必须引入一个新元素。

这是我的建议:

<span id="total-items" data-count="12">12</span>

和:

if ($('#total-items').data('count') === '12') {
    // do whatever
}

另外,请注意我将 total-itemsclass 更改为 id。这提醒您,您应该只从一个元素中获取此数据。

【讨论】:

  • 这是一个很好的观点,它解决了当前答案几乎所有可能的问题
  • @MilkyWayJoe 谢谢。我很想知道 OP 是否关心这些问题......
  • 但是 OP is 将在页面上显示该数字。 (至少,他没有暗示他不想显示它。)如果数字应该显示在页面上,那么另外将它放在数据属性中是多余的。似乎 OP 专门使用该 SPAN 在其中存储一个数值,如下所示:Total items: &lt;span&gt;12&lt;/span&gt;,这意味着他可以依赖它只包含一个数值。
  • @ŠimeVidas 我明白你在说什么,我想这是个人喜好。我坚信将表示与数据(即 MVC)分开,鉴于此,我不认为它是多余的,因为它们不用于同一件事。我意识到有很多方法可以解决Total items: 12 问题,但是如果团队中有新开发人员加入怎么办?他不应该在这样的问题上小心翼翼地浪费时间。
  • @ŠimeVidas 我认为数据属性根本不是演示的一部分。当我说 MVC 时,我并不是在谈论 javascript MVC 框架是如何实现的。我只是举一个关注点分离的例子。跨度内的东西用于演示。数据可以放入绑定到跨度的数据属性或 javascript 对象中。只要它分开,它就更灵活。这不是对与错的问题——你的答案很好。我只是不会那样做,因为我是一个非常防御性的程序员。
猜你喜欢
  • 2011-02-07
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-14
  • 2014-01-19
相关资源
最近更新 更多