Использование jQuery для поиска значений, присвоенных объекту JavaScript

#jquery #selection

#jquery #выделение

Вопрос:

Я знаю, что этот вопрос является дубликатом, но я ничего не смог найти по этому поводу, потому что, похоже, я не могу сформулировать правильный вопрос.

Я работаю с MapBox.js и создал маркер, у которого есть кнопка во всплывающем сообщении, позволяющая удалить маркер, отображающий всплывающее окно. Я получил код, который работает, из Stack Overflow, но использует класс для поиска маркера, и я хочу присвоить свойство / атрибут, что угодно, маркеру, который я могу использовать, чтобы конкретно найти тот маркер, у которого он есть. Я сделал это, используя обычное назначение члена объекта JavaScript:

 marker.uniqueID = Date.now().toString();
  

а затем присвоил marker.UniqueID кнопке удаления во всплывающем сообщении.
Я использовал инспектор Chrome и могу видеть эти присвоенные значения в объекте marker и в элементе html кнопки удаления. Однако, когда я попытался найти маркер карты, используя присвоенное кнопке значение:

 $( '.marker-delete-button[uniqueID="12345"]')
  

Я возвращаю пустой список совпадений, используя вышеупомянутый и несколько других селекторов. Поэтому, чтобы упростить это, я создал следующий код, который дает те же результаты:

 <!DOCTYPE html>
<html>
  <head>
    <meta charset=UTF-8/>
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  </head>
  <body>
    <script>
      console.clear();
      var obj1 = { text: 'obj1' };
      var obj2 = { text: 'obj2' };
      var obj3 = { text: 'obj3' };

      obj1.a=1;
      obj2.a=2;
      obj3.a=3;

      var $a = $.attr( 'a' );
      console.log( $a );
      console.log( obj1 );
    </script>
  </body>
</html>
  

Итак, где я ошибаюсь? Я понимаю, что я должен иметь возможность искать массивы и объекты JavaScript, имеющие определенное свойство / атрибут с определенным значением, но, похоже, я не могу заставить это работать.

Спасибо!

Комментарии:

1. jQuery выполняет поиск в DOM соответствующего элемента, а не произвольных объектов?

2. Да, это не то, для чего хорош jQuery, и это почти наверняка непрактично или невозможно

3. Вы не показываете какой-либо соответствующий код, который генерирует маркеры и сохраняет массив данных маркеров

Ответ №1:

Я посмотрел на MapBox.js , поскольку это ново для меня. Это выглядит очень интересно. Я попытался понять, в чем ваша проблема.

Но сначала позвольте мне ответить на опубликованный вами упрощенный пример кода. Лучше убедиться, что jQuery загружен, прежде чем использовать его.

 $(function() {
});
  

Следующий код добавляет два атрибута ‘a’ и ‘b’ к <body> элементу DOM. Вы можете проверить это в Firefox.

 var body = $("body").attr( 'a', 'avalue');
console.log(body);      
body.attr( 'b', 'bvalue');
console.log(body);
  

Я не совсем понимаю, что вы пытаетесь сделать со следующим. Это не изменило ни один из элементов html.

 var $a = $.attr('a');
console.log($a);
  

Вы надеялись, что он добавит атрибут к элементу <html> DOM, чтобы вы могли выбрать его позже с помощью jQuery, как показано ниже, и запустить некоторый код для результирующего объекта «this»?

 $('[a]').function() {
});