jQuery - 如果第一个元素有类,那么函数

时间:2015-03-17 08:48:36

标签: jquery

我希望在整个网站上添加一段代码来影响我的所有网页。

现在,它就是这样的。

if($('#container > div:first').attr('id') == 'filterOptions') {
  $('#container').prepend('<div class="banner"></div>');
}

输出:

<div id="container">
  <div class="banner"></div>
  <div id="filterOptions"><div>
</div>

示例,如果容器看起来像这样:

<div id="container">
  <div class="existingBanner"></div>
  <div id="filterOptions"><div>
</div>

由于第一个div没有filterOptions ID,所以不会发生任何事情。

现在我遇到了一个问题,因为我也有一些看起来像是这样的横幅广告被添加到

<div id="container">
  <a class="existingBanner" href="#"></a>
  <div id="filterOptions"><div>
</div>

这基本上有一个双横幅,这是我想避免的。因为它是一个锚而不是一个div。

所以我的问题是。而不是定位 div:first 我将如何定位所有元素?

类似......

if($('#container > 任何 :first').attr('id') == 'filterOptions') { ... }

3 个答案:

答案 0 :(得分:0)

您必须使用All Selector (*)

if($('#container > *:first').attr('id') == 'filterOptions') {
  $('#container').prepend('<div class="banner"></div>');
}

或者您可以使用功能方法:

// with hoisting
var $container = $('#container');
if($container.children().first().attr('id') == 'filterOptions') {
  $container.prepend('<div class="banner"></div>');
}

你也可以翻转逻辑:

// filterOptions is the first child:
if ( $('#filterOptions').prev().length === 0 ) {
    $('container').prepend('<div class="banner"></div>')
}

答案 1 :(得分:0)

if($('#container > div:first-child').attr('id') == 'filterOptions') {
  $('#container').prepend('<div class="banner">111111111</div>');
}

所以,先改变一下&#39;给第一个孩子&#39;。http://jsfiddle.net/un3opbsh/

答案 2 :(得分:0)

如果您想使用filterOptions ID #filterOptions

的任何标记

您应该在children()

中找到filterOptions
var $container = $('#container');
if($container.children().attr('#filterOptions') === "filterOptions") {
     $container.prepend('<div class="banner"></div>');
}

如果#filterOptions适用于任何标记而不仅仅是div。

,请使用此方法

希望它会对你有所帮助。