我需要在dom中将元素向上移动一级......
所以我做了:
jQuery(document).ready(function() {
jQuery('.pricing-table .fancy-header').each(function() {
jQuery(this).parent().before(this);
})
});
并且这也没问题。
var $node = jQUery('.pricing-table .fancy-header');
jQuery($node).parent().before($node);
})
它的效果很好(http://jsfiddle.net/obmerk99/EdvTz/),我的问题是,在某些特定页面加载时,我可能有2个不同的.fancy-header
元素,我需要移动第一个UP和第二个DOWN ..
请参阅小提琴:http://jsfiddle.net/obmerk99/EdvTz/3/
现在,除了一些可能的语法错误导致它失败(但我可以管理)之外,我的问题更多的是找到一种更优雅and/or
这样做的有效方式而不是原始{{1}声明。
jQuery中有这样的方法吗?
答案 0 :(得分:1)
“优雅”是主观的,但无论如何这里都是一个简短的方法。
jQuery('.pricing-table .fancy-header').each(function (i) {
jQuery(this).parent()[i ? "after" : "before"](this);
});
由于您只有一两个匹配项,我们只需使用计数器选择"after"
(如果1
)或"before"
(如果0
)方法
但为了清楚起见,if
声明可能会更好。您仍然可以使用i
计数器。
jQuery('.pricing-table .fancy-header').each(function (i) {
if (i)
jQuery(this).parent().after(this);
else
jQuery(this).parent().before(this);
});
如果真的很重要(猜测不是),这里的效率很高:
jQuery('.pricing-table .fancy-header').each(function (i) {
var par = this.parentNode;
par.insertBefore(this, i ? par.nextSibling : par);
});