【问题标题】:cloning a div into an obj and manipulating it将 div 克隆为 obj 并对其进行操作
【发布时间】:2014-03-27 23:12:15
【问题描述】:

我有以下代码。目标是取消隐藏包含 hidden 类的 div 并将其排序到列表的顶部。但是,我希望能够将#master div 克隆到一个对象中,例如。 var x = $('#master') 并且我希望能够在该对象上运行多个操作,而不是硬编码代码。

<style>
     .hidden { display: none; }
</style>

<div id="master">
<div class="item" id="z">
    <div>
        <span>z</span>
    </div>
</div>
<div class="item" id="y">
    <div>
        <span>y</span>
    </div>
</div>
<div id="x" class="item hidden">
    <div>
        <span>x</span>
    </div>
</div>
<div id="w" class="item hidden">
    <div>
        <span>w</span>
    </div>
</div>

<script>
function asc_sort(a, b) {
     return ($(b).text()) < ($(a).text()) ? 1 : -1;
}
</script>

在基本代码中我想做类似的事情

// clone #master into #temp for manipulating
$('#master').clone().append($("#temp"));
// unhide all divs with class of hidden
$('#temp .hidden').css('display', 'block');
// sort items alphabetically
$('#temp .item').sort(asc_sort);
// replace contents of #master with newly sorted #temp

相反,我想做更多类似的事情

var cloneObj = $('#masterlist');
cloneObj.find('.hidden').removeClass('hidden').sort(asc_sort);
$('#master').empty().html(cloneObj);     

我不想在直接代码上做这样的事情

var x = `$('#masterlist .hidden').css('display', 'block').clone().sort(asc_sort); 
$('#master').empty().html(x);

我想直接操作obj

【问题讨论】:

    标签: jquery html clone


    【解决方案1】:

    如果您只想“取消隐藏包含隐藏类的 div 并将其排序到列表顶部”,您可以这样做:

    $('.hidden').removeClass('hidden').prependTo('#master');
    

    查看:http://jsfiddle.net/gmd4M/1/

    另外,一个元素上不能有两个class 属性。在您的 html 中:

    <div class="item" id="w" class="hidden">
    

    不正确。

    【讨论】:

    • 对不起,应该更清楚。我已经更新了原帖
    【解决方案2】:

    您可以根据他们的类对 master 中的所有 divs 进行排序:

    var master = $('#master');
    $('div', master).sort(function (a, b) {
        if ($(a).hasClass('hidden')) {
            return -1;
        }
    
        return 1;
    }).appendTo(master).removeClass('hidden');
    

    如果你需要移除隐藏类,你可以在appendTo(master)之后链接它。

    Fiddle

    【讨论】:

    • 假设我不需要对其进行排序。如果我只想在主变量中找到所有带有 .hidden 的 div,我该怎么做?
    • @archytect 删除div .hidden中的空格;应该是div.hidden
    猜你喜欢
    • 2014-05-22
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多