1

我有一个使用 jquery 将一些 html 插入到 dom 的网络应用程序:

    $('<div />').html('<span class="' + someID + '-id">SomeText</span>').insertAfter($(".someidentifier"));

我遇到的问题是,可以有很多元素与someidentifier类,并且每个元素,如果我有两个,这个代码将运行你可以想象的那样:

    <div class="someidentifier">Some text</div>
    <div class="someidentifier">Some text</div>

此代码将在 dom 中生成以下内容:

    <div class="someidentifier">Some text</div>
         <span class="3123564654-id">SomeText</span>
         <span class="3123564654-id">SomeText</span>
    <div class="someidentifier">Some text</div>
         <span class="3123564654-id">SomeText</span>
         <span class="3123564654-id">SomeText</span>

应该在哪里:

    <div class="someidentifier">Some text</div>
         <span class="3123564654-id">SomeText</span>
    <div class="someidentifier">Some text</div>
         <span class="3123564654-id">SomeText</span>

所以我想使用该.next()函数并检查下一个兄弟是否具有我要输出的类,如果是则取消插入。这是我刚才说的我无法弄清楚的部分,我insertAfter(jQueryObject)不知道如何拦截它并取消它。我应该注意,我不能在它周围使用 if 语句,因为jQueryObject在这种情况下,两者都div已经存在。

我可以修改选择器以不包含对象,如果它有span一个类3123564654-id作为下一个兄弟?

4

2 回答 2

2

如果代码被多次执行,那么您可以过滤掉someidentifier具有新属性的下一个元素的元素,例如

var someID = '3123564654';
var targets = $(".someidentifier").filter(function () {
    var $next = $(this).next();
    return !$next.length || !$next.children('span').hasClass(someID + '-id')
});
$('<div />').html('<span class="' + someID + '-id">SomeText1</span>').insertAfter(targets);

演示:小提琴

于 2013-11-04T02:26:15.540 回答
0

如何检查类似...

if ( $(this).has(someID).length == 0) ) 

    {
        $(this).append('whateverYouNeedToAppendHere');
    }
于 2013-11-04T02:28:30.627 回答