YUI Event и ссылки - PullRequest
       7

YUI Event и ссылки

1 голос
/ 11 сентября 2009

Используя YUI, у меня есть div с подключенным слушателем, который говорит, что если я нажму на div, выполню функцию обратного вызова. Внутри div - это серия обычных HTML-ссылок на другие страницы. Я хочу, чтобы, если я нажму на ссылку, я перейду на эту страницу. Но если я щелкну где-нибудь в div вне ссылки, он выполнит функцию обратного вызова.

Что на самом деле происходит, так это то, что если я щелкаю ссылку внутри div, он выполняет функцию обратного вызова для div и затем сразу же перемещается на связанную страницу.

Я знаю, как удержать мой клик в элементе div от пузыря до документа. Но как мне взять обычную старую ссылку html и предотвратить клик по ней, чтобы она не вызывала событие click для div? Нужно ли переформатировать ссылки как ссылки javascript с их собственными обратными вызовами и затем остановить распространение? Или есть более простой способ?

Amy

Ответы [ 2 ]

3 голосов
/ 11 сентября 2009

У Сета правильная идея, хотя неплохо бы быть более точным в своих проверках.

YAHOO.util.Event.on("container", "click", function(e) {
    var tgt = YAHOO.util.Event.getTarget(e);

    if(tgt.nodeName.toLowerCase() !== 'a') {
        YAHOO.util.Event.preventDefault(e);

        console.log("Not an anchor!"); //TODO: REMOVE DEBUG OUTPUT
    }
});

Я создал пример страницы на http://tivac.com/yui2/amy_events.htm на тот случай, если вы хотите увидеть его в действии.

1 голос
/ 11 сентября 2009

Вы можете проверить tagName на event.target следующим образом:

YAHOO.util.Event.addListener("container", "click", function(e) { 
  if (e.target.tagName == 'DIV') {
     // do something magical!
  }
}); 

Если вы в конечном итоге поместите div внутри тега привязки, вы явно нарушите это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...