【发布时间】:2011-02-05 12:17:36
【问题描述】:
我正在使用 jQuery DataTables 插件。我想将搜索框 (.dataTables_filter) 和要显示下拉列表 (.dataTables_length) 的记录数从其父元素 (.dataTables_wrapper) 移动到我页面上的另一个 div,而不会丢失任何已注册的 javascript 行为。例如,搜索框有一个附加到“keyup”事件的函数,我想保持它不变。
DOM 看起来像这样:
<body>
<div id="parent1">
<div class="dataTables_wrapper" id="table1_wrapper">
<div class="dataTables_length" id="table1_length">
<select size="1" name="table1_length">
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</div>
<div class="dataTables_filter" id="table1_filter">
<input type="text" class="search">
</div>
<table id="table1">
...
</table>
</div>
</div>
<div id="parent2">
<ul>
<li><a href="#">Link A</a></li>
<li><a href="#">Link B</a></li>
<li><a href="#">Link C</a></li>
</ul>
</div>
</body>
这是我希望 DOM 在移动后的样子:
<body>
<div id="parent1">
<div class="dataTables_wrapper" id="table1_wrapper">
<table id="table1">
...
</table>
</div>
</div>
<div id="parent2">
<div class="dataTables_filter" id="table1_filter">
<input type="text" class="search">
</div>
<div class="dataTables_length" id="table1_length">
<select size="1" name="table1_length">
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</div>
<ul>
<li><a href="#">Link A</a></li>
<li><a href="#">Link B</a></li>
<li><a href="#">Link C</a></li>
</ul>
</div>
</body>
我一直在研究 .append()、.appendTo()、.prepend() 和 .prependTo() 函数,但在实践中没有任何运气。我还查看了 .parent() 和 .parents() 函数,但似乎无法编写可行的解决方案。我还考虑过更改 CSS 以使元素绝对定位 - 但坦率地说,页面设置了流畅的元素,我真的希望这些元素浮动在它们的新父级中。
非常感谢您提供任何帮助。
【问题讨论】:
-
您列出的所有 DOM 操作函数都应该可以正常工作。将 DOM 元素附加到不同的父元素会将其移动到新位置,从而保持所有事件不变。到底什么不适合你?有错误吗?
标签: jquery jquery-plugins