все дети селектор в jquery? - PullRequest
       14

все дети селектор в jquery?

0 голосов
/ 31 января 2010

упрощено, у меня есть следующий код:

 <a id="123" href="#"><span>click</span><span>me</span></a>

когда я нажимаю на кнопку «щелкнуть» и «я», она не работает со следующим селектором jquery:

 $("a").click...

может, потому что я нажимаю на детей? Как я могу написать селектор, чтобы он отображался на всех детей в «а»?

Ответы [ 3 ]

5 голосов
/ 31 января 2010

[обновлено]
Проблема в том, что вы используете не тот инструмент для работы (а именно свойство event.target). Это вернет элемент, что событие произошло на .., но не элемент в фазе пузырьков, который обрабатывает событие ... вам нужно использовать event.currentTarget .. Но в случае jQuery это тоже самое, что ключевое слово this внутри обработчика ...
ref: http://api.jquery.com/event.currentTarget/

Прочитайте в Порядок событий , как объяснено в режиме quirksmode. Особое внимание Использование всплытия событий и currentTarget <ч /> [предыдущий ответ]
Убедитесь, что внутри метода .click вы используете указатель на функцию или анонимную функцию.

так

$("a").click( function() {/*...*/} ); // anonymous function

или

function some_function()
{
//...
}
$("a").click ( some_function ) // function pointer

но не

$("a").click ( some_function() ) // unless some_function returns a function pointer..
2 голосов
/ 31 января 2010

Мне нужно получить идентификатор родителя. как я мог это сделать? я сейчас использую event.target.id

$(event.target).closest('a').attr('id') сделает это.

Но нет необходимости использовать event.target: в функции обработчика событий специальная переменная this будет указывать на элемент, к которому вы добавили обработчик, а не на элемент-потомок, по которому щелкнули:

$('a').click(function() {
    alert('id= '+this.id)
});

(или $(this).attr('id'), если вы хотите заставить jQuery выполнять какую-то постороннюю работу.)

PS. Не используйте идентификаторы, которые начинаются с цифры. Это неверно и может запутать некоторые браузеры.

2 голосов
/ 31 января 2010

Если вам нужно получить идентификатор родительского элемента, тогда вы просто делаете это:

$('a').children().click(function() {
  var parentId = $(this).parent('a').attr('id');
  // Code goes here
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...