选择/克隆子类的父级 - 将文本追加到父级中的各种属性,并将appendTo / insertAfter结果附加到其中

时间:2014-07-24 21:56:35

标签: javascript jquery html

正如标题所说,我正试图通过提供孩子的班级来选择父div。

然后我需要获取此父级的全部内容和

  1. 将文本附加到所有元素的“id”属性的开头
  2. 将文本附加到所有元素的“for”属性的开头
  3. 然后我需要通过insertAfter或appendTo将它输出到另一个div。我更愿意将它附加到一个空的div,它将有一个类或ID。

    到目前为止,我有点混乱:

    $('a[class="on  maincatlink"]') // using this to select the parent
    .parent() // parent is class="div2" but we cannot use "div2" as the selector
    .clone($().find($ ("label").attr('for', +'helloworld')).find($("input").attr('id', +'helloworld')))
    .insertAfter(".leftBoxContainer");
    });
    

    这里存在一些问题,首先是将ID和FOR更改应用于克隆内容,而且还应用于正在克隆的原始内容。其次,我不理解如何将“helloworld”附加到ID或FOR属性的开头。这里的结果是最终提供id =“NaN” - 那里的代码是错误的,如果有人可以提供一些指示,谢谢。

    为了更简单的解释而没有轻拍我丑陋的代码:

    我需要选择$的父('a [class =“on maincatlink”]') - 将静态文本追加到所有输入ID的开头,将静态文本追加到所有标签FOR的开头并输出结果在页面上的其他地方的div。

    编辑: //关于HTML的更多信息

    <div class="div2"><input checked="" class="catcheckbox" id="checkboxid1" type="checkbox"><label class="maincatlabel" for="checkboxid1"></label><a href="http://127.0.0.1/zen11/index.php?main_page=index&amp;cPath=1" class="on  maincatlink">MOBILE PHONES</a>
    <div class="div1">
    <div class="div2"><input checked="" class="catcheckbox" id="checkboxid2" type="checkbox"><label class="subcatlabel" for="checkboxid2"></label><a href="javascript:void(0)" style="cursor:default" class="on  subcatlink">APPLE</a></div>
    <div class="div2"><input class="catcheckbox" id="checkboxid6" type="checkbox"><label class="subcatlabel" for="checkboxid6"></label><a href="http://127.0.0.1/zen11/index.php?main_page=index&amp;cPath=1_6" class="off subcatlink">SAMSUNG</a></div>
    </div>
    </div>
    

    与上面的html一样,当一个类别或子类别处于活动状态时,它使用类“on maincatlink”和“on subcatlink”。如果类别未激活(由用户浏览),则应用“off maincatlink / subcatlink”类。

    “on”类在当前所选子类别所属的所有先前类别中产生共鸣。我想选择所有这些“on”类别并将它们列在另一个div中。我想保留复选框和标签,以保留它创建的树状菜单。

2 个答案:

答案 0 :(得分:1)

<强> JS:

$(function () {
    var cloned = $('.on.maincatlabel')
        .parent()
        .clone();
    cloned.find('label')
        .each(function (index, element) {
        $(element).attr({
            'id': 'prefix-' + $(element).attr('id'),
                'for': 'prefix-' + $(element).attr('for')
        });
    });
    cloned.appendTo('body');

    $(document).on('click', 'label.on', function (e) {
        window.location.href = $(this).attr('data-href');
    });
});

使用HTML类似:

<div class="div2">
    <label class="maincatlabel on" for="checkboxid1" data-href="http://127.0.0.1/zen11/index.php?main_page=index&amp;cPath=1">
        <input checked="" class="catcheckbox" id="checkboxid1" type="checkbox" />MOBILE PHONES</label>
    <div class="div1">
        <div class="div2">
            <label class="subcatlabel on" for="checkboxid2">
                <input checked="" class="catcheckbox" id="checkboxid2" type="checkbox" />APPLE</label>
        </div>
        <div class="div2">
            <label class="off subcatlabel" for="checkboxid6" data-href="http://127.0.0.1/zen11/index.php?main_page=index&amp;cPath=1_6">
                <input class="catcheckbox" id="checkboxid6" type="checkbox" />SAMSUNG</label>
        </div>
    </div>
</div>

See in actionish

答案 1 :(得分:0)

这是最适合我的代码

jQuery(document).ready (function () {
    var cloned = $('a[class="on  maincatlink"]').parent().clone();

    cloned.find('label')
    .each(function (index, element) {
        $(element).attr({
        'for': 'prefix-' + $(element).attr('for')
        });
    });

    cloned.find('input')
    .each(function (index, element) {
        $(element).attr({
        'id': 'prefix-' + $(element).attr('id')
        });
    });


    cloned.appendTo('#navBreadCrumb');

});

非常感谢@Deryck的指导!

编辑:需要&#34;索引,&#34;在适当的地方。