代码之家  ›  专栏  ›  技术社区  ›  Adam Kiss

PHP中的DOM类注入

  •  0
  • Adam Kiss  · 技术社区  · 15 年前

    主意

    通过jquery,我可以标记所有 :first-child :last-child 包含类的文档中的元素(好吧,几乎全部是:) first 以后我可以穿哪一种(即先穿 ul#navigation 很容易适应 ul#navigation .first )

    我使用了以下代码:

      var $f = $('*:first-child')
          $f.addClass('first');
      var $l = $('body *:last-child')
          $l.addClass('last');
    

    例子

    http://jsbin.com/ikuca/3

    例子已经在这里了——但这不是实现它的方法,它只是另一种想法的原型,对我来说现在更简单的语言。

    问题

    现在,我的问题是是否可以通过 php 因此,非JS用户/小工具可能具有相同的效果和额外的样式,并且在浏览器上也会减少过度杀伤力。

    因此,是否可以捕获输出,将其解析为HTML并插入此类 容易地 在里面 PHP ?

    澄清

    我很清楚 output buffering ,只是没有做太多的事情-而且,我不确定是否修改输出 string 在里面 PHP 作为 解析DOM (没有) regex )-在服务器上有多困难-当然有缓存,所以所有的东西都能运行 一旦 直到再次编辑页面。

    4 回复  |  直到 15 年前
        1
  •  3
  •   Gordon Haim Evgi    15 年前

    我相信你可以用 output buffering 要捕获已组装的PHP页面,然后使用 DOM XPath 论它 add the class attributes 但问题是,为什么不先把类放到元素上,然后再组装页面呢?保存jquery和捕获。

    另外,通过jquery添加CSS类可以做到 ul#navigation.first 也有点奇怪,因为您使用的jquery表达式是一个css选择器,所以您可以直接使用它来设置css文件中第一个子级的样式。添加类的唯一原因 .first 如果要向后兼容无法处理的浏览器 :first-child .

        2
  •  0
  •   Josh Andreas Rehm    15 年前

    我认为在jquery中这样做比在php中容易,但可以在php中完成。

    要捕获您想要的输出缓冲,可以使用 ob_start 函数,在发送任何输出之前。你可以通过 ob_start() 一个PHP函数,它将接收作为参数的HTML代码,然后可以使用 PHP's DOM functions .

        3
  •  0
  •   sibidiba    15 年前

    jquery在客户机的borwser中运行。PHP在服务器上运行。一旦服务器提供了DOM,就不能在浏览器中对其进行修改。

    你所能做的,就是用适当的类来服务页面。例如,在PHP中,打印表时:

    <table>
    <?php
    $i=0;
    foreach ($rows as $row):
    ?>
        <tr class=<?php echo ($i%2==0?'even':'odd')?>
            <td><?php echo $row;</td> 
        </tr>
    <?php
    endforeach;
    ?>
    </table>
    

    另外,您真的想支持没有JS的客户机吗?

        4
  •  0
  •   Community CDub    8 年前

    你甚至可以用同样的 CSS 使用上面提到的一些库的选择器 here . 我读到了 PHPQuQuess 图书馆甚至有同样的 :first-child 伪类 你需要。

    我真诚地希望你计划使用 高速缓存 或者你的 中央处理器 使用率会上升 100% 有一些要求。

    推荐文章