使用jquery选择伪元素

时间:2014-11-19 23:10:02

标签: jquery css jquery-selectors pseudo-element

你如何将这块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看起来的......

enter image description here

3 个答案:

答案 0 :(得分:2)

不确定它与:before的工作原理完全相同,但如果您使用jQuery插入<span> - 标记,然后调整<span>的CSS,该怎么办?即。

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

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

答案 1 :(得分:1)

Javascript无法修改:之前,:在伪选择之后。

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

答案 2 :(得分:0)

首先将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函数。