#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() {
});