Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在两个跨距之间添加跨距?_Jquery_Element - Fatal编程技术网

Jquery 如何在两个跨距之间添加跨距?

Jquery 如何在两个跨距之间添加跨距?,jquery,element,Jquery,Element,在我的页面上,我有多个具有指定类的div,这些类有两个span元素。我想检查第二个元素是否有一个特定的类,在两个span之间添加新的span对象 var allrtSp = $(".rtSp"); for (i = 0; i < allrtSp.length; i++) { var cls= $(allrtSp[i]).next().attr('class'); var newSpan; if (cls

在我的页面上,我有多个具有指定类的div,这些类有两个span元素。我想检查第二个元素是否有一个特定的类,在两个span之间添加新的span对象

var allrtSp = $(".rtSp");
        for (i = 0; i < allrtSp.length; i++) {
            var cls= $(allrtSp[i]).next().attr('class');
            var newSpan;
            if (cls != 'rtMinus' && cls != 'rtPlus')
            {
                $(allrtSp[i]).add('<span class="rtNoChild"></span>');
            }
        }
var allrtSp=$(“.rtSp”);
对于(i=0;i
我使用了上面的代码,但这不起作用。

试试这个

var secondSpan;
$(".rtSp").each(function(){
   lastSpan = $(this).find("span:last");
   if(lastSpan.hasClass("classNameToCheck")){
     lastSpan.before("<span  class='rtNoChild'>text</span>");
   }
});
var-secondSpan;
$(“.rtSp”)。每个(函数(){
lastSpan=$(this.find(“span:last”);
if(lastSpan.hasClass(“classNameToCheck”)){
“文本”之前的最后一个span;
}
});

您不应该使用

$(allrtSp[i]).after('<span class="rtNoChild"></span>')
$(allrtSp[i])。在(“”)之后
您拥有的代码将添加一个新的span作为allrtSp[i]的子级,而不是在它和下一个span之间。请检查以下代码:-

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Jquery FROM CDN vs self host</title> 

    <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.6.2.min.js" type="text/javascript"></script>

</head>
<body>
<h1>Test</h1>

<div class="divcssclass">
<span>Test1</span>
<span class="particularClass">Test2</span>
</div>

<div class="divcssclass">
<span>Test3</span>
<span>Test4</span>
</div>

<div class="divcssclass">
<span>Test5</span>
<span class="particularClass">Test6</span>
</div>
<script type="text/javascript">
    $(document).ready(function () {
        $("div.divcssclass").each(function () {
            var secondSpan = $(this).find("span:nth-child(2)");
            //alert(secondSpan.hasClass("particularClass"));
            if (secondSpan.size() > 0 && secondSpan.hasClass("particularClass")) {
                secondSpan.before('<span> Test </span>');
            }
        });

    });
    </script>
</body>
</html>

来自CDN的Jquery与自主机
试验
测试1
测试2
测试3
测试4
测试5
测试6
$(文档).ready(函数(){
$(“div.divcsclass”)。每个(函数(){
var secondSpan=$(this.find(“span:nth child(2)”);
//警报(secondSpan.hasClass(“特殊类”);
if(secondSpan.size()>0&&secondSpan.hasClass(“特殊类”)){
第二个跨度在(‘测试’)之前;
}
});
});

我能想到的最简洁的:

$('div.rtSp span:nth-child(2).the_class').each(function() {
    $(this).before('<span class="rtNoChild">2</span>');
});
$('div.rtSp span:nth child(2).the_class')。每个(函数(){
$(本)。在('2')之前;
});
对于以下HTML

<div class="rtSp">
    <span>1</span>
    <span class="the_class">3</span>
</div>

1.
3.
将产生

<div>
    <span>1</span>
    <span class="rtNoChild">2</span>
    <span class="the_class">3</span>
</div>

1.
2.
3.

不确定为什么要循环这个,看起来它不需要。这可以在jQuery选择器中更简洁地完成,而不是混合使用本机JavaScript循环和jQuery节点遍历。请看下面我的答案。@andyb-javascript循环比jquery更好。这需要更多的资源。我已经接受了对我有用的答案,而不是
secondSpan=$(这个)为什么不使用
$(“.rtSp span:last child”)
?因为他们说每个
div
都有两个
span
元素<代码>第n个子项(2)
也可以使用。是的,可以使用。因为问题中提到了,每个div中只有2个跨距,所以我使用了公式(1),最终得出了相同的结果。我们也可以在每个函数Super中使用$(“.rtSp span:last”)而不是:公式(1)!检查css类也在选择器本身中完成。。。伟大的