Изменить содержимое div, если div содержит div - PullRequest
2 голосов
/ 20 декабря 2011

У меня есть структура;

<p class = "foo">"sometext"</p>
<div class = "foo">
   <p class = "moo">"sometext"</p>
   <div class = "moo">
      <p class = "boo">"sometext"</p>
      <div class = "boo">
      </div>
  </div>
</div>

И из этой структуры я создаю меню, когда я нажимаю на абзац, отображается соответствующий div.

 $("p").click(function()
      {
          $(this).next("div").toggle(); 
                     #Code that adds a minus sign before the paragraph eg. "+Mylink to "-Mylink"
       });

Я сейчас пытаюсь получить знак «+», если меню не нажимается, и «-», если нет.Проблема, с которой я столкнулся, - это способ узнать, как пропустить последний шаг (класс бу), для этого не потребуется никаких дополнительных знаков (это не меню).Любой простой способ пройти через структуру и добавить знак плюс?Есть ли какой-нибудь простой способ заставить функцию щелчка узнать ее расширенную / развернутую?

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Вы можете использовать селектор :has() для проверки братьев и сестер:

$('div:not(:has(*))').each(function() {
  $(this).prepend('-');
});

Это должно работать:

$('p').prepend('<span class="toggle">-</span>');

$("p").click(function() {
  var sign = $(this).siblings('.toggle');

  $(this).next("div").toggle();

  if (sign.text() == '+') {
    sign.text('-');
  } else {
    sign.text('+');
  }
});
0 голосов
/ 20 декабря 2011

Учитывая ваш HTML, проще всего изменить первый селектор на

$("p:not(.boo)").click(function() {
    // ....
})
...