我有一组按钮,我正在为动态添加按钮。我的选择会是这个样子:如何在追加到另一个元素之前使用Jquery/Javascript从选择中删除元素?
$elements = [a.midToggle, a.menuToggle, a.ui-crumbs]
我想这个选择预先考虑到现有controlgroup:
<div data-role="controlgroup" data-type="horizontal" class="dropZone">
<a href="#" class="some">Some</a>
<a href="#" class="midToggle">MidTog</a>
</div>
但前面加上之前,我想从我的选择已经删除controlgroup里面的按钮,否则他们会在那里多次。
我想这样的,但它并没有在所有的工作:
// I have multiple controlgroups, so I need to add the buttons to all of them
$('.dropZone').each(function() {
var $first = $(this),
$buttons = $elements.clone();
$buttons.each(function() {
// check if class name on new button is already in controlgroup
if ($(this).is(".midToggle") && $first.find(".midToggle").length > 0) {
$(this).remove();
}
if ($(this).is(".menuToggle") && $first.find(".menuToggle").length > 0) {
$(this).remove();
}
if ($(this).is(".ui-crumbs") && $first.find(".ui-crumbs").length > 0) {
$(this).remove();
}
});
// append what's left
$first.append($buttons)
我认为我的$按钮不会被删除,但我不知道如何得到它工作。我的三个if语句也有些蹩脚。有一个更好的方法吗?
编辑:
我不得不modifiy解决一点,因为每个按钮都有多个类,所以我不能简单地检查ATTR(“类”)。这不是完美的,但工作原理:
function clearOut($what) {
$buttons.each(function() {
if ($(this).is($what)) {
$buttons = $buttons.not($what)
}
});
}
// filter for existing buttons
// TODO: improve
if ($first.find('.midToggle')) {
clearOut('.midToggle');
}
if ($first.find('.menuToggle')) {
clearOut('.menuToggle');
}
if ($first.find('.ui-crumbs')) {
clearOut('.ui-crumbs');
}
为什么不能让他们都在那里,只是'隐藏()'/'显示() “他们? – 2012-04-15 16:35:01
@lila G:也想过这个,但是那里可能会有按钮,这些按钮会随着我在哪个页面而不断变化。以上三点是不变的。也许应该给这个更多的想法。 – frequent 2012-04-15 16:41:04
首先从控件元素中删除所有按钮,然后只需添加任何你想要的按钮,会比较容易... – 2012-04-15 16:49:53