jQuery - найти точную цель клика - PullRequest
0 голосов
/ 12 ноября 2011

У меня весь TD настроен на клики, чтобы минимизировать и максимизировать его. Тем не менее, я хочу сделать так, чтобы при щелчке по определенной части TD он не мин / макс, а выполнял какой-то другой код. Прочитав этот сайт и Google, я понял, что мне нужно найти цель мероприятия. Я взял этот код из другого вопроса о stackoverflow, и он отлично работает в Chrome, но JS вылетает в Firefox.

Вот где он падает:

$(function()
{
    $('.clickable').live('click', function()
    {
        alert('click');
        //Figuring out where a user clicked
        var targ;
        var e;
        if (!e) 
            e = window.event;
        if (e.target) 
            targ = e.target;
        else if (e.srcElement) 
            targ = e.srcElement;
        if (targ.nodeType == 3) // defeat Safari bug
            targ = targ.parentNode;

        alert('after');
        });
return false;
});

В обоих случаях отображается предупреждение «щелчок», но только в Chrome отображается «после». Любая помощь?

Ответы [ 3 ]

2 голосов
/ 12 ноября 2011

Удалить

var e;
if (!e) 
    e = window.event;

и добавить событие e в качестве параметра функции:

$('.clickable').live('click', function(e)

Также смотрите это jsfiddle .

1 голос
/ 12 ноября 2011

С помощью вложенных обработчиков щелчков вы можете остановить всплывающее событие, например,

$(document).on('click', '.clickable', function(){
    //do stuff
});

 $('#mytable').on('click', '.clickable-child', function(event){
    event.stopPropagation();
    //do child stuff
});

Остановка распространения не позволит запустить первое событие.

0 голосов
/ 12 ноября 2011

вот решение в jsfiddle - http://jsfiddle.net/vHgVa/

...