@eugene159

Можно ли как-нибудь получить селектор из JQuery объекта? Или как еще решить такую задачу?

Нужно сделать так, чтобы второй элемент с классом block в клонированном блоке стал красным. Заново выбрать его нельзя, так как неизвестно (представим, что неизвестно, хотя на самом деле мы видим, что переменная $block задается выше), по какому селектора была выборка. Можно как-нибудь получить из JQuery объекта селектор, по которому он был создан (из $block получить '.block:nth-of-type(2)')? Чтобы выбрать заново. Или как еще решить эту задачу?
Как это сделать?
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 3
Robur
@Robur
Знаю больше чем это необходимо
$block.selector
Ответ написан
Комментировать
Изучаю JQuery пару часов, а сам JS второй день, решил сразу на примерах учиться, атк что может это и не правильно или я не понял задачу, но второй элемент в клоне становится красным
let $block = $('.block:nth-of-type(2)');
let $clone = $('.block-wrap').clone().addClass("newClass");
$clone.appendTo('.wrapper');
//$clone.find($block).css('color', 'red');
let $block2 = $('.block-wrap.newClass div:last');
$block.css('color', 'green');
$block2.css('color', 'red');
Ответ написан
Комментировать
erge
@erge
Примус починяю
$clone.find($block).css('color', 'red');

не работает, потому что $block это ссылка на JQuery объект, которого нет в $clone, потому что это копия - новый другой объект и он != $original, поэтому в нем нет объекта $block
$clone и $original это два объекта, которые равны лишь по innerHTML, но это два разных объекта.

можно получить индекс элемента $block в наборе и работать в клоне с индексом:
$clone.children().eq($block.index()).css('color', 'red');


либо хранить в переменной не объект $('.block:nth-of-type(2)'), а сам селектор '.block:nth-of-type(2)'
и соответственно работать с ним:

const block = '.block:nth-of-type(2)';
  
// ........

$clone.find(block).css('color', 'red');

$original.find(block).css('color', 'green');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы