Jquery - выбор элемента и всего, что внутри него - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть событие click и оператор if внутри него, как показано ниже.

if (!$(e.target).is("textarea.textobject, div.texteditor"))
{
  // do stuff
}

Это работает, но проблема в div, показанном ниже.Когда я нажимаю на span или таблицу внутри div, это не работает.Я пытался (div.texteditor> *), но это не сработало.

<div class="texteditor">
   <span>1</span>
   <table>
      <tr><td></td></tr>
   </table>
</div>

Так что в основном я хочу иметь возможность выбрать div.texteditor, и он охватывает все, что внутри него.Кто-нибудь знает решение этой проблемы?Я уверен, что что-то упустил ..

Ответы [ 2 ]

0 голосов
/ 02 декабря 2010

Не знаю, но вы пытались создать другие события, назначенные элементам внутри div?Что-то вроде:

if ( $(e.target).is("span") &&  $(e.target).parent("div.texteditor") )
{
  // do stuff
}

Не знаю, работает ли это, но это идея!

Надеюсь, это поможет вам.^^

Если вы хотите обратиться ко всем детям, это может сработать:

if ( $(e.target).parent("div.texteditor") )
{
  // do stuff
}
0 голосов
/ 02 декабря 2010

Если обработчик событий находится на самом <div>, просто используйте this вместо e.target (который может быть дочерним), например:

if (!$(this).is("textarea.textobject, div.texteditor"))
{
  // do stuff
}

... если вместоВы хотите проверить, находится ли цель где-либо внутри одного из этих двух типов селекторов, используйте .closest() и .length, например:

if ($(e.target).closest("textarea.textobject, div.texteditor").length == 0)
{
  // do stuff
}

Поскольку .closest() работает с текущими элементами и родителей, это очень удобно здесь.

...