【问题标题】:Selecting multiple children with same parent in CSS在 CSS 中选择具有相同父级的多个子级
【发布时间】:2013-10-22 12:12:27
【问题描述】:

我正在使用 PHPQuery,它是 jQuery 的 PHP 端口,因此它也使用 CSS 选择器。但是,一个区别是,当有多个选择器时,PHPQuery 不会按文档顺序返回匹配的元素。

是否可以将其合并到一个选择器中?

#article>p,#article>blockquote

我能想到的唯一其他解决方案是:

#article>*:not(div):not(table):not(ul):not(...

【问题讨论】:

  • 很确定您回答了自己的问题.. 虽然您可以删除 * .. 使用:#article>:not(div):not(table):not(ul)
  • 库是否支持.filter() 方法?如果是,您可以选择所有孩子,然后过滤结果。
  • .has() ? api.jquery.com/has
  • @undefined 根据this,是的
  • @Izkata 是的,我刚刚检查过,它支持.filter() 方法,不幸的是,因为我住在地狱(伊朗)谷歌不允许我访问到它的资源。 “403。这是一个错误。不允许来自您所在国家/地区的请求这就是我们所知道的。

标签: php jquery css


【解决方案1】:

你可以结合选择器使用add()

$('#article>p').add('#article>blockquote')

给定一个代表一组 DOM 元素的 jQuery 对象, .add() 方法从这些对象的并集构造一个新的 jQuery 对象 元素和传递给方法的元素。 .add() 的参数 几乎可以是 $() 接受的任何东西,包括 jQuery 选择器表达式、对 DOM 元素的引用或 HTML sn-p,jQuery api

【讨论】:

    【解决方案2】:

    我还没有使用过phpQuery(直到 5 分钟前),但是因为它像 jQuery 一样工作,使用它的 .filter() 方法应该可以解决问题,这个想法是选择所有的孩子和然后过滤符合条件的元素。

    $doc['#article']->children()->filter(function($i, $element) {
        return in_array($element->tagName, array('blockquote', 'p'));
    })->foo();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多