3

クリックされた要素の子のクラスに一致するすべての要素の属性を削除しようとしています。

例えば

<span class="parent">
    <span class="child1">
        <a href="mylink">text</a>
    </span>
</span>

<span class="child1">
    <a href="mylink">text</a>
</span>

hrefクリックされた要素から属性を削除するコードがあります。ただし、同じリンクを持つ要素も削除できるようにしたいと考えています。

もちろん、特定のクラスを指定してこれを行うこともできますが、コードで、クリックされた親の子のクラスを見つけてから、一致するクラスを見つけて、href を削除する必要があります。

この場合、人が.parent要素をクリックすると、コードは子要素のクラスを検索し、.child1を削除し、子要素の一致するクラスを持つ要素のhrefも削除します。href.child1

したがって、コードは次の状況でも同じことを行います

<span class="parent">
    <span class="child2">
        <a href="mylink">text</a>
    </span>
</span>

<span class="child2">
    <a href="mylink">text</a>
</span>

hrefすべての.child2クラスの を削除します。

この理由は、この機能を何度も使用する必要があり、削除するクラスを指定するたびに異なるコードを記述したくないためですhref

それを達成するために使用するjQueryの組み合わせはわかりませんが、構成は次のようなものになると思います。

$("parant").click(function () {
    $.find(this.childrenClass, function () {
        $.removeAtt("href");   
    });
});
4

2 に答える 2

4

コードは自明である必要があります。

$('.parent').click(function() {
    // Get all classes from child elements.
    var classes = $(this).children().map(function() {
        return this.className.split(/\s+/);
    }).get();

    // Find any element having one of those classes, find all `a` children
    // and remove the href attribute.
    $('.' + classes.join(',.')).children('a').removeAttr('href');
});

ここでは、いずれかの子と共通のクラスを持つ要素を探しています。必要に応じて、コードを調整して特定の要素に制限する必要があります。

実際のマークアップに応じて、コードを単純化することもできます (つまり、各親に子が 1 つしかない場合、または各子にクラスが 1 つしかない場合)。

デモ

于 2013-01-01T23:43:31.753 に答える
1
$(".parent").click(function () {
    var $this = $(this),
        klass = $this.children("span").attr("class");
    $("." + klass).find("a").removeAttr("href");
});​

http://jsfiddle.net/366cc/

于 2013-01-01T23:47:05.607 に答える