2012-09-20 4 views
10

これは動作しないようです...jQueryを使用してHTMLからデータ属性を削除する

私は特定のリンクを隠すページを持っています。 DOMがロードされるとき、私はこれらの要素のいくつかを切り替えるためにjQueryを使用しています。これは、そのようなデータ属性を用いて駆動される。予定通り

$.each($(".d_btn"), function() { 
    var btn = $(this).data('usr'); 
    if (btn == '48'){  
    $(this).children('.hidden_button').toggle(); 
    } 

ザ・すべての作品以上:

<div class="d_btn" data-usr='48'> 
    <div class="hidden_button"> 

はその後、私は、コードを持っています。問題は、if文が評価された後、クラス.d_btnからdata-usrを削除しようとしていることです。私は次のことを試したし、何が機能していない(つまり、ページがロードされた後、ソースはまだデータ-USR属性を示しています。私は今、時間のカップルのためにこれに取り組んできました

$(this).removeAttr("data-usr"); 

$(this).removeData("usr"); 

と。 ..nothing!ヘルプは大歓迎です!

私は空の文字列へのデータ属性を設定する偉大な提案を試みたが、私はまだ望ましい結果が届かない

UPDATE。

Toもう少し説明してください。なぜなら、属性を削除しようとしているのは、Ajaxレスポンスがページに別のアイテムを追加したときに、以前に追加されたアイテムに既にボタンが表示されているか隠されているからです。 AJAXの応答では、DOMがロードされたら同じ関数を呼び出しています。何かがAJAX経由で追加されたときに

現在のところ、それは(隠されたもの、またはその逆を示す。)すべてのボタンを切り替えますうわ...

私も自分のアプローチに代わるものを試して完全に喜ん。ありがとう!

UPDATE

まあ、電球だけ点滅し、私はちょうど(.SHOW使ってやりたいことができています)の代わりに.toggleの()

とにかく、私はまだ何かが追加されたときにページが潜在的に何百ものアイテムをチェックするので、この質問に対する答えを見つけたいと思う.-これはひどく非効率的だ(コンピュータの場合でも、hahaha)。

答えて

7

DOMを変更してもソースには影響しません。インスペクタ/開発者ツールで表示できるDOMに影響します。右クリック=>ソースの表示はJavaScriptの実際の現在のソースではなくページの元のソースを表示します。

+1

+1ポイントはこれです。 http://jsfiddle.net/VVbFG/ – undefined

+0

ありがとう - 本当に役に立ちました!私は追加情報で私のポストを更新しました。 –

5

なぜ値をランダム値または空変数にする代わりにremoveAttrが機能しない場合は可能です。

$(this).attr("data-usr" , ''); 

$(this).prop("data-usr" , ''); 
+0

ありがとうございました - 元の投稿を更なる説明で更新しました... –

+0

しかし、data-usrが空の場合、ifループが正しく実行されないと思います..その特定のdivのボタンステータス私が思っていることが間違っているなら、あなたはフィドルを構築できますか? –

+0

それはまさに私が思ったものですが、それはそのようには機能しません。定義されていない未定義は、上の彼の応答でフィドルを作成しました:jsfiddle.net/VVbFG –

1

空白文字列に設定して:

$(this).attr("data-usr", ""); 

I Kolinkが言った二何:ソース、DOMをチェックしません。 (Chrome:Ctrl + Shift + i)。

+0

ありがとうございます - 私は元のポストを更なる説明で更新しました... –

1

他の人が述べたように。ソースを確認すると、元の未編集のウェブページのソースのみが表示されます。あなたがする必要があるのは、開発者ツールを使ってDOMをチェックすることです。

私はちょうどjsfiddle hereのChromeのインスペクタのすべてをチェックしており、その属性はデータと確実に削除されています。

+0

ありがとう - おそらく私の推論に問題がありますか?残念なことに、私はDOMをチェックする方法を知らない(火かき棒で試して何かの頭や尾を作ることはできませんでした)... –

+1

Firefoxでは、ページ内の要素を右クリックして "Inspect Firebugの要素 "を参照してください。選択した要素にローカライズされたページのマークアップが表示されます。 –

+0

ニース - ^ありがとうございました^私はちょうどチェックして、あなたは正しい - データ属性が削除されました。それは、それが私の推論の問題であったという私の結論を確認します。質問は今、AJAXを介して新しい項目が追加され、同じ機能を呼び出すときに、すべての項目でループが実行され、すべてが切り替わるのはなぜですか? –

関連する問題