2016-05-11 8 views
2

javascriptを使用して各入力クラスの親divを削除して、自分のクラスに置き換えようとしています。しかし、入力フィールドのIDは常にランダムです。各要素のjavascript親divを削除して自分のdivに置き換えます

element.parentElement 

:一度あなたが使用してDOM要素の親要素を選択することができ、選択し

<div class="random1293"> 
    <input id="filter_16" type="checkbox" name="filter[]" value="16"> 
</div> 

<div class="random2423"> 
    <input id="filter_17" type="checkbox" name="filter[]" value="17"> 
</div> 
+0

そのようhttp://stackoverflow.com/questions/8571512/how-to-remove-a-parent-node-with-all-its-childrenもの、それはdiv要素のすべてのハードコードの除去である以外、私はそれが私の問題で動作するように構文を作る方法を知らない。 –

+0

あなたがアーカイブしたいものはまだ不明です。あなたは入力フィールドを持っていて、これらのフィールドのそれぞれは削除したいdivにラップされていますよね?あなたのクラスをどこに追加したいですか? – Linus

+0

すべての入力フィールドの周りのdivは、自分自身で置き換える必要があります。しかしdivの名前は変わる可能性があります。 –

答えて

2

この投稿にJqueryというタグを付けずに、OP内のコードでjqueryを使用していても、Jqueryソリューションが受け入れられると判断します。

idで始まるすべての入力要素を選択し、親divのクラスを必要なものに変更します。

$('input[id^="filter_"]').each(function(){ 
    $(this).parent().attr('class','yourOwnClassHere'); 
}); 
+0

これは何もしないようです。 –

+0

@NickAudenaerde小さなタイポがありました。私は 'filter_'の代わりに' filtter_'とタイプしました。今私はそれがチェックを持っていることを修正しました.. –

+0

まだ何もしていないように見える=/ –

2

:私の入力フィールドがどのように見えるかここで

<script type="text/javascript"> 

var filter = document.getElementsByName('filter[]'); 

function show() { 
    for (var i = 0; i < filter.length; i++) { 
     alert(filter[i].value) 
    } 
} 

//The .sidebar-filter-item, should not be hardcoded 
//because that name can differ always. 
$("<h2> test </h2>").insertBefore(".sidebar-filter-item "); 

されています。ここに私のコードですid属性がランダム/予測不可能になる場合、要素を選択することに関して、あなたは代わりにse:

document.getElementsByTagName("input"); 

これは、あなたの入力要素の配列を提供します。これらの入力要素をループして、それぞれに対して操作を実行できます。

また、あなたは(あなたがページ上のすべての入力をしたくない場合)クラスを使用して、選択したい要素のそれぞれ与えることができる:また、あなたが扱うことができる配列を返します

document.getElementsByClassName("className"); 

を同じように。

+0

このオプションでは、divのdivに変更することはできません。 –

+0

あなたが入力をこのようにしている場合は、 'input.className + =" otherclass ";のような操作を使ってクラスを追加することができます;これはどういう意味ですか? –

関連する問題