【问题标题】:jquery prepend to parent if child :contains x如果孩子:包含x,jquery会添加到父母
【发布时间】:2012-08-27 17:43:33
【问题描述】:

如果孩子包含“组”这个词,我想在它的父母前面加上一些东西。如何将其设置为有条件的?

$("#breadcrumbs ul li:nth-child(4):contains('Group')").css("display","block");
$("#breadcrumbs").prepend("<p>relevant note about Groups</p>");

<nav id="breadcrumbs" role="navigation">
<ul>
<li>Home</li>
<li>Section</li>
<li>People</li>
<li>Group 1</li>
</ul>
</nav>

fiddle

【问题讨论】:

  • 每次都必须是第四个孩子吗?

标签: jquery jquery-selectors conditional parent-child


【解决方案1】:

你离得太近了! append 是你所追求的,而不是 prepend

Prepend 会将信息放在您的选择之前,而 append 将放在后面。

我猜你想把它放在符合你要求的那个之后,而不是在所有列表之前?如果是这样,请查看 jsfiddle :)。

我为你创建了一个jsfiddle,向你展示如何操作。

代码

$("#breadcrumbs ul li:nth-child(4):contains('Group')").css("display","block")
   .append("<p>relevant note about Groups</p>");

【讨论】:

  • 嘿,老兄,我想他可能想prepend 给父母,但无论如何 +1
【解决方案2】:

这是你要找的东西吗:http://jsfiddle.net/NLfmU/1/ http://jsfiddle.net/anWRa/

使用.parent api 前置到当前孩子的父母

希望它符合需要:),如果我错过了什么,请告诉我!

http://jsfiddle.net/NLfmU/

代码

$("#breadcrumbs ul li:nth-child(4):contains('Group')").css("display","block").parent().prepend("<p>relevant note about Groups</p>");
​

【讨论】:

  • 是的,就是这样。不知道 .parent 这很方便。谢谢!
  • @nathanbweb 不用担心 :) 很高兴它有帮助!
  • 您意识到在使用parent() 的示例中,您将段落添加到ul 元素(这是无效的;ul 只能将li 作为子元素)?
【解决方案3】:

试试这个:

var $elem = $("#breadcrumbs ul li:contains('Group')");
if ($elem.length) {
    $elem.css('display', 'block').parent().prepend("<p>relevant note about Groups</p>")
}   

http://jsfiddle.net/FqzGs/5/

【讨论】:

  • 老兄!怎么样? +1 人,使用 .length 检查,虽然我认为 .parent 也是如此。
  • @Tats_innit 嘿伙计,是的,真的很久了。你是粉红色的吗?
  • 老兄!不是粉红色的! :P我知道布鲁夫,很高兴见到你!
【解决方案4】:

我建议使用不同的方法:

$('ul li:eq(3):contains("group")').closest('nav')
    .css('display','block')
    .prepend('<p>relevant note about Groups</p>');

这不是明确的条件,但需要存在包含单词“组”的 li 才能执行任何操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 2011-11-02
    相关资源
    最近更新 更多