/ / Usuwanie elementów HTML ze znakami specjalnymi - javascript, jquery

Usuwanie elementów HTML ze znakami specjalnymi - javascript, jquery

Chcę usunąć obiekt HTML DOM za pomocą jego identyfikatorazawiera znaki specjalne (kropki, przecinki itp.). Próbowałem użyć tego kodu, który unika tych znaków, ale nie działa (element nie jest usuwany):

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

gdzie nazwa pliku to jego identyfikator. Warto wspomnieć, że ciąg znaków ze znakami ucieczki jest wyświetlany zgodnie z oczekiwaniami. A jeśli „zakoduję” ten ciąg znaków, to działa dobrze… Więc gdzie może być problem?

Odpowiedzi:

2 dla odpowiedzi № 1

Zamiast próbować uciec od postaci, możesz spróbować na kilka innych sposobów:

  1. Posługiwać się jQuery "s escapeSelector () na ciąg id. Pozwoli to uniknąć znaków specjalnych w ciągu. Uwaga escapeSelector został dodany w wersji 3.0 jQuery. Zobacz, jak sobie radzą tutaj Jeśli zainteresowany.

    $( "#"+ $.escapeSelector("theText") )
    
  2. Użyj selektor atrybutu zamiast próbować uciec od wszystkich możliwych znaków dla selektora identyfikatora

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

    To jednak wybierze wiele elementów, jeśli z jakiegoś dziwnego powodu masz wiele elementów o tym samym identyfikatorze.

Próbny

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>