これを機能させることはできないようです...
特定のリンクを非表示にするページがあります。DOM が読み込まれると、jQuery を使用してそれらの要素の一部を切り替えます。これは、次のようなデータ属性を使用して駆動されます。
<div class="d_btn" data-usr='48'>
<div class="hidden_button">
次に、コードがあります:
$.each($(".d_btn"), function() {
var btn = $(this).data('usr');
if ( btn == '48' ){
$(this).children('.hidden_button').toggle();
}
上記のすべてが計画どおりに機能します。問題は、if ステートメントが評価されたら、クラス .d_btn から data-usr を削除しようとしていることです。次のことを試してみましたが、何も機能しません (つまり、ページが読み込まれた後、ソースにはまだ data-usr 属性が表示されます:
$(this).removeAttr("data-usr");
$(this).removeData("usr");
私はこれに数時間取り組んでいますが、何もありません! 助けていただければ幸いです。
アップデート
データ属性を空の文字列に設定するという素晴らしい提案を試みましたが、まだ望ましい結果が得られていません。
もう少し説明すると、属性を削除しようとしている理由は、ajax 応答がページに別のアイテムを追加するときに、以前に追加されたアイテムに既にボタンが表示または非表示になっているためです。AJAX 応答時に、DOM が読み込まれると同じ関数を呼び出します。
現在、AJAX 経由で何かが追加されると、すべてのボタンが切り替えられます (非表示のボタンが表示され、その逆も同様です)。
また、私のアプローチに代わるものを試してみたいと思っています。ありがとう!
アップデート
さて、電球が点滅し、.toggle() の代わりに .show() を使用するだけで、やりたいことを実行できます。
とにかく、何かが追加されるたびにページが何百ものアイテムをチェックする可能性があるため、この質問に対する答えを見つけたいと思います - これはひどく非効率的です (コンピューターの場合でも、笑)