仅在父容器内将元素附加到div

时间:2015-11-03 10:48:12

标签: javascript jquery

如何将.div4附加到其父容器上的.div1 onLy中,而不是它还附加到具有相同div的下一个容器?我尝试了基本的jQuery appendTo,但这会在我的DOM中的所有.div1元素上设置.div4。

<div class="container">
    <div class="div1"></div>
    <div class="div2"></div>
    <div class="div3"></div>
    <div class="div4"></div>
</div>
<div class="container">
    <div class="div1"></div>
    <div class="div2"></div>
    <div class="div3"></div>
</div>

更新:更改了无效的HTML。现在使用此脚本(将虚拟div替换为我的实际div):

var $this = $('span.conditionHilite.refurbHilite');
$this.appendTo($this.closest('.itembox.centerbox.col.span_1_of_3').find('.image.col1'));

现在的问题是,如果我的页面包含多个带有&#34; span.conditionHilite.refurbHilite&#34;的容器。它会将这些元素的总量附加到每个父容器中,而不仅仅是一个。

1 个答案:

答案 0 :(得分:1)

如果您尝试使用jQuery将元素附加到多个目标元素,它将克隆该元素,但需要多次。如果您只想将.div4附加到同一容器元素中的.div1元素,则需要显式选择该元素。像这样:

var $this = $('.div4');
$this.appendTo($this.closest('.container').find('.div1'));

使用.closest()遍历DOM树以查找包含元素,然后.find()查看包含.div1元素元素的.div4。使用当前只有单个元素的DOM结构,只需移动id="container"元素,而不创建任何克隆。

注意:正如Rory McCrossan指出的那样,您在HTML中重复使用ID,因此无效。我在上面的代码中使用了一个类选择器,假设您将通过从class="container"切换到'[id="container"]'来修复无效的HTML。如果 - 如评论中所述 - 您绝对无法更改,那么self.weightUnitString = [weightString substringFromIndex: [weightString length]-2]; NSLog(@"loadInfoToEdit weightString: %@", weightString); NSLog(@"loadInfoToEdit weightUnit: %@", self.weightUnitString); 选择器应该可以正常工作。