【问题标题】:if statement & jQuery :containsif 语句和 jQuery :包含
【发布时间】:2013-06-20 09:03:18
【问题描述】:

我有一个表,其中包含未设置样式的链接,因此我想将这些链接包装在 div 中并通过 Bootstrap 类设置它们的样式。我在使用 .contains() 函数时遇到了问题,我可能还需要一些关于 if 语句的帮助。

到目前为止,这是我的代码,这是一个链接,http://jsfiddle.net/clintongreen/LFb6M/

// Add Bootstrap button classes to Admin links
if($('td.menu-operations a:contains("add")') {
$(this).css('color','white').wrap('<div class="btn btn-inverse btn-mini" />');
}
else if($('td.menu-operations a:contains("edit")') {
$(this).css('color','white').wrap('<div class="btn btn-danger btn-mini" />');
}
else if($('td.menu-operations a:contains("delete")') {
$(this).css('color','white').wrap('<div class="btn btn-danger btn-mini" />');
}
else ($('td.menu-operations a')){
$(this).css('color','white').wrap('<div class="btn btn-danger btn-mini" />');
}

谢谢大家:)

【问题讨论】:

  • if($('td.menu-operations a').text().indexOf('add')){。我个人讨厌:contains()

标签: jquery if-statement contains


【解决方案1】:

事实证明,我不需要 if 语句来解决这个问题。感谢@Musa 指出这一点并让我走上正轨。我能够从他的回答中弄清楚该怎么做。我会把它标记为正确的,但我觉得它需要更加充实,以便更容易理解。

您可以在此处查看它的运行情况http://jsfiddle.net/clintongreen/LFb6M/15/

// Add Bootstrap button classes to Admin links
$('td.menu-operations a').css('color','white').wrap('<div class="btn btn-mini" />');
$('td.menu-operations a:contains("add")').parent().addClass('btn-primary');
$('td.menu-operations a:contains("edit")').parent().addClass('btn-inverse');
$('td.menu-operations a:contains("delete")').parent().addClass('btn-danger');

上面发生的情况是,我们使用 .wrap() 将所有链接包装在带有默认 Bootstrap 类的 div 中,然后我们使用 :contains 选择器来定位具有特定文本的链接,然后使用 .parent() 定位新生成的 div并通过 .addClass() 添加适当的类

PS:使用 :contains 时要小心使用选择器,而不是默认的 .contains() 函数,因为这不适用于文本。

【讨论】:

  • 对于那些感兴趣的人,我发现了另一个选择器,称为属性包含选择器。这将允许您检查您的 ID 或 HREF 是否包含您要查找的单词。 api.jquery.com/attribute-contains-selector
【解决方案2】:

执行if($(selector)) 将始终评估为真,正确的版本是if($(selector).length),但在这种情况下不需要if。你也使用this,好像它会在每个 if 块中改变(它不会)

// Add Bootstrap button classes to Admin links
$('td.menu-operations a:contains("add")').css('color','white');
$('td.menu-operations a:contains("edit")').css('color','white');
$('td.menu-operations a:contains("delete")').css('color','white');
$('td.menu-operations a').css('color','white').wrap('<div class="btn btn-danger btn-mini" />');

http://jsfiddle.net/LFb6M/11/

【讨论】:

  • .indexOf()!请让这个:contains() 和我一起消失吧,哈哈。
  • @Ohgodwhy 你为什么讨厌:contains
  • 谢谢,但这会将链接包含在两个 div 中
  • 如果 (this) 在每个块中都不会改变,您能否建议另一种会改变的方法。所以我可以定位我想要的链接?谢谢
  • 我得到了它的工作方式,感谢您的帮助。 jsfiddle.net/clintongreen/LFb6M/14@Ohgodwhy 我尝试了 .indexOf 但没有运气看起来像:contains 就在这里;)
猜你喜欢
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
相关资源
最近更新 更多