在AngularJS中改变DOM元素的位置
Change the location of a DOM element in AngularJS
我目前有一个类似于旋转木马的角指令。为了减少dom元素计数,我从dom中删除元素并重新插入它们。我目前正在使用angular.element
来选择,删除和插入新项目,如下所示:
app.directive('myDirective', function(){
return{
link: function(scope, elem){
var jqLite = angular.element;
var parentElement = jqLite(elem[0].queryselector('.parent'));
// Selection..
var oldElement = jqLite(elem[0].queryselector('.oldItem'));
var newElement = jqLite('<div class=".newItem">Content here</div>');
oldElement.remove();
parentElement.append(newElement);
}
}
});
基本上这段代码找到oldElement
并删除它,并创建newElement
并将其附加到父容器元素。基本上,我想知道是否有可能移动 oldElement
到一个新的位置,而不是删除和创建一个全新的元素?
这就是append (Node.prototype.appendChild)的工作原理。如果元素已经在DOM树中,它将元素移动到新的位置;如果元素还没有在DOM树中,它将创建新的元素并插入到DOM中。
在你的例子中:
app.directive('myDirective', function(){
return{
link: function(scope, elem) {
var jqLite = angular.element;
var parentElement = jqLite(elem[0].querySelector('.parent'));
var oldElement = jqLite(elem[0].querySelector('.oldItem'));
parentElement.append(oldElement);
}
}
});
或者更确切地说,因为您不需要jQuery/jqLite)来实现这样一个简单的DOM技巧:
link: function(scope, elem){
var parentElement = elem[0].querySelector('.parent');
var oldElement = elem[0].querySelector('.oldItem');
parentElement.appendChild(oldElement);
}
相关文章:
- 使用javascript查找元素位置的最快方法
- 当静态元素与滚动上的固定元素位置重叠时进行检测
- 另一个元素JAVAscript中的元素位置
- CSS.滚动后元素位置发生变化
- JQuery Mobile单击事件不起作用,具体取决于HTML中的元素位置
- 正在查找表行中的td元素位置
- jquery追加元素位置始终为0
- 如何通过JS移动元素位置而不闪烁
- 当按钮点击更改元素位置时,Javascript
- 在事件发生时获取元素位置的当前页面 URL,并将该 URL 输出到另一个页面上
- 更改 JS/D3 页上的元素位置
- 字典中由元素:位置对组成的移动元素
- 观察元素位置并对 AngularJS 中的更改做出反应
- JavaScript 设置宽度尺寸会更改元素位置
- Angularjs 获取元素位置
- 按类名获取元素位置
- 从数组中获取元素位置
- 如何在更改选择元素宽度时固定所有元素位置
- 破解以在滚动条出现时保持水平元素位置
- 将第一个数组中的元素位置与另一个数组进行比较