Jquery переключает только теги p под div нажал

0

Быстрый, простой вопрос. У меня есть эта функция, работающая в данный момент;

$("#menuopties").click(function(){
$("p").toggle();
});

Однако это переключает каждый p-тэг. Я просто хочу переключить теги p, которые находятся под div #menuopties (который был нажат)

Благодарю.

  • 1
    Вам нужно их найти .
  • 0
    Под # меню или внутри них?
Теги:

5 ответов

2
Лучший ответ

Ваш текущий селектор "p" получит все элементы типа p вместо получения p в текущем объекте. Используйте find(), чтобы получить потомка текущего элемента. вы получите источник объекта события, используя $(this)

$("#menuopties").click(function(){
   $(this).find("p").toggle();
});

Вы можете использовать текущий объект передачи в контексте селектора, используя jQuery (selector [, context])

$("#menuopties").click(function(){
   $("p", this).toggle();
});
  • 0
    Спасибо, все ответы сработали, однако ваш был наиболее полным и не просто решил, но и научил меня чему-то. Спасибо
  • 0
    Добро пожаловать.
0

Попробуйте это

$("#menuopties").click(function(){
$(this).find("p").toggle();
});
  • 1
    Спасибо, помогло, но я предпочел другое решение с объяснением!
  • 0
    @ rdrb-3 Нет проблем :) мой друг.
0

Как насчет:

$("p", this).toggle();
  • 0
    Спасибо, помогло, но я предпочел другое решение с объяснением!
0

Измените $('p').toggle(); to $(this).children('p').toggle();

$(this) относится к текущему объекту jQuery (в этом случае обертывание #menuopties DOM #menuopties), поэтому запуск .children() позволяет вам фильтровать свои .children() элементы любым селектором, который вы хотите (в данном случае p).

edit: как указано в buzzsawddog, важно отметить .children() возвращает только дочерние элементы на один уровень ниже в DOM, поэтому, если ваши p теги не являются непосредственными #menuopties элементами #menuopties вы должны использовать .find().

  • 1
    В зависимости от масштаба его проблемы find () может быть лучше, чем .children (). Например, что если в его div есть еще один div? или промежуток?
  • 0
    Хорошая точка зрения. Я выбрал самый простой ответ, поскольку он не дал никакой разметки, но вы абсолютно правы.
Показать ещё 2 комментария
0

пытаться:

$("#menuopties").click(function(){
    $(this).find("p").toggle();
});

надеюсь, что это помогло.

  • 0
    Помогли и спасибо, но я предпочел первый ответ, потому что он объясняет почему. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню