如何防止 Cufón 替换特定类下元素中的文本?

发布于 2024-11-14 11:51:00 字数 1070 浏览 3 评论 0原文

我正在使用 Cufón 替换网页上的文本,并且已加载 jQuery 库。我正在尝试替换

  • 元素的所有实例(其中包括

    等),但仅当它们不这样做时t出现在某个类别下。

  • 下面是一些 HTML 示例:

    <ul>
       <li>This</li>
       <li>Should</li>
       <li>Be Replaced</li>
    </ul>
    <div>
      <ul>
        <li>So should</li>
        <li>this</li>
      </ul>
    </div>
    <div class='no-cufon'>
       <ul>
          <li>Don't replace this</li>
       </ul>
    </div>
    

    请注意,我的大部分 HTML 都是动态的——否则我就直接更改标记。

    我正在使用命令 Cufon.replace('*:not(.no-cufon) li'); 来替换文本,但它仍然针对全部

  • 标签
  • 在我的开发者控制台 (Chrome 12) 中,我使用这些 jQuery 选择器获得以下值:

    $("body *").length
    11
    $("body *:not(.no-cufon)").length
    10
    $("body * li").length
    6
    $("body *:not(.no-cufon) li").length
    6
    

    出于某种原因,

  • 标签位于no-cufon 类仍在我的最终 jQuery 选择器中匹配。
  • 那么,如果这不起作用——什么可以呢?

    I'm using Cufón to replace text on a webpage, and I have the jQuery library loaded. I'm trying to replace all instances of <li> elements (among others like <p>, et cetera), but only when they don't appear under a certain class.

    Here is some sample HTML:

    <ul>
       <li>This</li>
       <li>Should</li>
       <li>Be Replaced</li>
    </ul>
    <div>
      <ul>
        <li>So should</li>
        <li>this</li>
      </ul>
    </div>
    <div class='no-cufon'>
       <ul>
          <li>Don't replace this</li>
       </ul>
    </div>
    

    Note that most of my HTML is dynamic--otherwise I'd just go ahead and change the markup.

    I'm using the command Cufon.replace('*:not(.no-cufon) li'); to replace the text, but it's still targeting all <li> tags

    In my developer console (Chrome 12), I get the following values with these jQuery selectors:

    $("body *").length
    11
    $("body *:not(.no-cufon)").length
    10
    $("body * li").length
    6
    $("body *:not(.no-cufon) li").length
    6
    

    For some reason the <li> tags under the no-cufon class are still being matched in my final jQuery selector.

    So if that doesn't work--what will?

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(2

    初熏 2024-11-21 11:51:00

    filter() 怎么样?通过以下内容,它选择所有没有 no-cufon 父元素的 li 元素。

    Cufon.replace($('li').filter(function(){
        if ($(this).parents('.no-cufon').length == 0) return true;
    }));
    

    例子:
    http://jsfiddle.net/niklasvh/prr4W/

    How about filter()? With the following it selects all li elements that don't have no-cufon parents.

    Cufon.replace($('li').filter(function(){
        if ($(this).parents('.no-cufon').length == 0) return true;
    }));
    

    example:
    http://jsfiddle.net/niklasvh/prr4W/

    撞了怀 2024-11-21 11:51:00

    body :not(.no-cufon) libody .no-cufon ul li 匹配相同的 li,因为 >ul 本身是 :not(.no-cufon)

    试试这个:

    Cufon.replace('body > :not(.no-cufon) > li, body > :not(.no-cufon) > ul > li');
    

    body :not(.no-cufon) li is matching the same lis as body .no-cufon ul li, because the uls themselves are :not(.no-cufon).

    Try this instead:

    Cufon.replace('body > :not(.no-cufon) > li, body > :not(.no-cufon) > ul > li');
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文