【问题标题】:Select pseudo-elements with jquery [duplicate]用jquery选择伪元素[重复]
【发布时间】:2015-01-17 16:14:12
【问题描述】:

你会如何将这段 css 转换成 jquery?

.nav li a:first-child:nth-last-child(2):before { 
    content:""; 
    position: absolute; 
    height:0; 
    width: 0; 
    border: 5px solid transparent; 
    top: 50% ;
    right:5px;  
}

我尝试了几种不同的方法,但没有任何方法能正常工作。此 css 仅在 jquery 选择整个锚点之前选择。

$(".nav li a:first-child:nth-last-child(2)").before().css(...); // did not work

$(".nav li a:first-child:nth-last-child(2)").before(function(){
    $(this).css(...);
}); // did not work

我也尝试了很多其他的东西,让我知道你们的想法,谢谢!

HTML:

<ul class="nav">
    <li><a href="index.php">Home</a></li>
    <li><a href="index.php">Class Assignments</a>
        <ul>
            <li><a href="#">Java</a>
                <ul>
                    <li><a href="java1.php">Java 1</a></li>
                    <li><a href="java2.php">Java 2</a></li>
                    <li><a href="java3.php">Java 3</a></li>
                    <li><a href="java4.php">Java 4</a></li>
                </ul>
            </li>
            <li><a href="#">JavaScript</a>
                <ul>
                    <li><a href="javaScript1.php">JavaScript 1</a></li>
                    <li><a href="javaScript2.php">JavaScript 2</a></li>
                    <li><a href="javaScript3.php">JavaScript 3</a></li>
                    <li><a href="javaScript4.php">JavaScript 4</a></li>
                </ul>
            </li>
            <li><a href="#">PHP</a></li>
            <li><a href="#">C#</a></li>
        </ul>
    </li>
    <li><a href="index.php">Projects</a>
        <ul>
            <li><a href="project.php">Project</a></li>
            <li><a href="project.php">Project</a></li>
            <li><a href="project.php">Project</a></li>
            <li><a href="project.php">Project</a></li>
        </ul>
    </li>
    <li><a href="index.php">Contact</a></li>
</ul>

这就是css的样子...

【问题讨论】:

  • 你能给我们看看你的导航的HTML代码吗?
  • 你确定你的意思是.nav li a:first-child:nth-last-child(2):before?我做了一个小提琴,CSS似乎根本不会影响代码的任何部分......jsfiddle.net/Niffler/287y3s4s
  • @Niffler 没关系;你不能从 JS 中操作伪元素。
  • @Mathletics 我认为既然给出的 CSS 无论如何都不会影响任何东西,也许 OP 实际上意味着 ":before" 以外的东西......如果不是,那当然太糟糕了...
  • CSS 中的代码工作得非常好,它没有显示的原因是因为我有另一个 css 影响了它的颜色。所以它在那里你只是看不到它..

标签: jquery css jquery-selectors pseudo-element


【解决方案1】:

Javascript 不能修改 :before、:after 伪选择器。

您的问题的解决方案是将 css 规则直接添加到 css 文件中。 https://developer.mozilla.org/en-US/docs/Web/API/document.styleSheets

【讨论】:

  • 即使使用 JQuery 也不行?
  • @Foemilod LOL jQuery JavaScript。
  • 我知道,但我希望它提供更多功能,Javascript 遗漏了一些东西,JQuery 可以添加它...
  • @Foemilod jQuery 不能做任何 JS 不能做的事情。
【解决方案2】:

先将css存入一个对象:

     var css =
            {
           "content":"",
           "position":"absolute",
           "height":"0",
           "width":"0", 
           "border":"5px solid transparent",
           "top":"50%",
           "right":"5px"
            };

然后在任何其他函数之前调用 css 函数:

        $(".nav li a:first-child:nth-last-child(2)").css(css).before(function(){


        });

我相信您需要在调用其他函数之前调用 css 函数。

【解决方案3】:

不确定这是否与:before 完全相同,但是如果您使用jQuery 插入&lt;span&gt;-tag,然后调整&lt;span&gt; 的CSS 会怎样?即

$(".nav li a:first-child:nth-last-child(2)").prepend('<span class="before-hack" />');
$('.before-hack').css(...);

这是一个小提琴:http://jsfiddle.net/Niffler/287y3s4s/9/

【讨论】:

  • 那行得通,我的目标不是与 css 完全相同,我只是想实现相同的目标。我并没有具体说明,但是是的。非常感谢:)
  • @Foemilod 很高兴我能帮上忙!
猜你喜欢
  • 2015-01-31
  • 1970-01-01
  • 2019-06-02
  • 2015-06-27
  • 2017-10-06
  • 2014-04-27
  • 1970-01-01
  • 2012-06-30
  • 2011-06-16
相关资源
最近更新 更多