Как исключить потомка в селекторе jquery?

Ссылка скопирована
1 ответ

Есть контент, подгруженный через ajax:

<div class="content">         <div class="child"></div>     </div>

<div class="content"> <div class="child"></div> </div>

К нему применяется:

$(document).on('click', '.content', function(){     ... });

$(document).on('click', '.content', function(){ ... });

Вопрос: как в данном примере средствами псевдоклассов jquery исключить потомка .child из селектора в методе on? Чтобы при клике на .child ничего не происходило. Пример ниже не работает:

$(document).on('click', '.content:not(.child)', function(){     ... });

$(document).on('click', '.content:not(.child)', function(){ ... });

Дополнительно:

если .child всегда дитё .content, а не находится где-то глубже, то .content > :not(.child) должно помочь

Добавьте

$(document).on('click', '.content .child', function(event){     event.stopPropagation(); });

$(document).on('click', '.content .child', function(event){ event.stopPropagation(); });

  • Тоже хотел предложить, затестил на jsfiddle, target всё ещё .child, как и лог выводится после клика на ребёнка.
  • historydev, может тогда так:
    document.querySelector('#test').addEventListener('click', (event) => {   if (event.target !== event.currentTarget) {   	return;   }      console.log('click'); });

    document.querySelector('#test').addEventListener('click', (event) => { if (event.target !== event.currentTarget) { return; } console.log('click'); });

  • Спасибо! Все работает, вы очень помогли))
  • historydev,
    test.onclick = e => {   if (e.target.closest('.test22')) return;   console.log(e.target.className, e.target.id) }

    test.onclick = e => { if (e.target.closest('.test22')) return; console.log(e.target.className, e.target.id) }

  • IvanU7n, странно что погружение всё ещё работает, а проверить родителя не проблема, да
  • historydev, Погружение работает если его задать явно.
  • Александр, чтобы его остановить, нужно его запустить, интересно)snippet
  • Александр, хотя даже так не работает
  • Александр,
    test.addEventListener("click", function(e) { 	e.stopPropagation();   console.log(e.target.className, e.target.id) }, true); test.addEventListener("click", function(e) { 	e.stopPropagation();   console.log(e.target.className, e.target.id) }, false);

    test.addEventListener("click", function(e) { e.stopPropagation(); console.log(e.target.className, e.target.id) }, true); test.addEventListener("click", function(e) { e.stopPropagation(); console.log(e.target.className, e.target.id) }, false);

    С явно заданным работает:

    test22.onclick = (e) => console.log('test22 log');  test.addEventListener("click", function(e) { 	e.stopPropagation();   console.log(e.target.id) }, true);  /* test.onclick = e => {   e.stopPropagation();   console.log(e.target.id) } */

    test22.onclick = (e) => console.log('test22 log'); test.addEventListener("click", function(e) { e.stopPropagation(); console.log(e.target.id) }, true); /* test.onclick = e => { e.stopPropagation(); console.log(e.target.id) } */

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Алексей Денисов Ответ

Для исключения потомка в селекторе jQuery можно использовать метод `.not()`. Этот метод позволяет исключить определенные элементы из выборки, основываясь на определенных критериях.

Например, если у нас есть следующая структура HTML:

```html

Потомок 1
Потомок 2

```

И мы хотим выбрать все потомки элемента с классом `parent`, за исключением элемента с классом `child`:

```javascript

$('.parent').find('.child').not('.child:first').css('color', 'red');

$('.parent').find('.child').not('.child:first').css('color', 'red');

```

В данном примере мы выбираем все потомки элемента с классом `parent`, затем с помощью метода `.not()` исключаем первого потомка с классом `child` из выборки, и устанавливаем им стиль цвета текста на красный.

Таким образом, использование метода `.not()` позволяет легко исключить определенные элементы из выборки с помощью jQuery.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно