2017-09-01 11 views
0

HTML DOMオブジェクトをそのID、特殊文字(ドット、カンマなど)で削除します。これらの文字をエスケープするこのコードを使用しようとしましたが、機能していません(削除されない要素)。特殊文字でHTML要素を削除する

 var file_html_id ="#"+ filename.replace(/[!"#$%&'()*+,.\/:;<=>[email protected]\[\\\]^`{|}~]/g, "\\\\$&"); 
     console.log(file_html_id); 
     $(file_html_id).remove(); 

ここでfilenameはそのIDです。エスケープ文字を含む文字列が期待どおりに表示されることは言及する価値があります。そしてその文字列を "ハードコード"すれば正常に動作します...問題はどこにありますか?代わりに、あなたは他のいくつかの方法を試みることができる文字を自分で脱出しようとしているの

答えて

2

  1. id文字列の使用jQuery's escapeSelector()。これは、文字列内の任意の特殊文字をエスケープします。注escapeSelectorがjQueryのv3.0で追加されました。彼らが逃げようとしている様子を見るなら、here

    $('#'+ $.escapeSelector('theText')) 
    
  2. いくつかの奇妙な理由で同じIDを持つ複数の要素を持っている場合、これはしかし、複数の要素を選択します代わりに、IDセレクタ

    $('[id="idHere"]') 
    

    可能なすべての文字をエスケープしようとしているのattribute selectorを使用します。

デモ

var id = "some,weird®,id"; 
 
var id2 = "some,other®,id"; 
 

 
$('#'+ $.escapeSelector(id2) ).css({border:'1px solid green'}); 
 

 
$('[id="'+id+'"]').css({border:'1px solid red'});
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
 
<div id="some,weird®,id"></div> 
 
<br/> 
 
<div id="some,other®,id"></div>

+0

感謝。両方の方法が機能します。私が投稿したコードがうまくいかない理由が分かっていますか? –

+0

エスケープスラッシュが多すぎると、 '' \\\\ $& ''の代わりに '' \\ $& "'が働いていました。 –

関連する問題