Выбор цели события из вложенных функций

0

У меня проблемы с выборами JQuery. У меня есть обработчик кликов, который обрабатывает логику, когда пользователь щелкает строку в таблице. Однако, когда некоторые из этих строк будут нажаты, логика щелчка обнаружит, что у них есть недопустимые данные, и я хотел бы их вычеркнуть. Я делаю это, добавляя соответствующий класс CSS, чтобы превратить свой текст в серый цвет (и в противном случае отключить их).

Моя основная структура - это что-то вроде:

$('#tableInfo tr').live('click', function(){

    function doStuff(){
        //Ajax call
        $.ajax({
        ...
        ...
        )}.success(function(){
            ...
        } else {
            var target = $(event.target);
            target.addClass('disabled');
        }
    });
});
var information = $(#misc-information)
doStuff(information)

Это основная идея. Меня волнует материал в блоке else, который не работает, как я должен. Я провел некоторое исследование того, как справиться с такой логикой, и event.target показался именно тем, что я искал для выбора текущего происхождения события (строка, на которую была нажата кнопка, которую я хочу отключить). Я вложен внутри обработчика событий, и я выбираю цель события, но это ничего не делает, и я не знаю, почему.

Любая помощь оценивается.

  • 0
    Это написано tarrget в вашем реальном коде? Кроме того, какую версию JQuery вы используете. live давно устарела и с тех пор полностью удалена.
  • 0
    Вероятно, следует начать переходить к использованию .on() вместо .live() здесь в 2013 году ...
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

вы не передали объект события, а цель была написана с ошибкой

$('#tableInfo tr').live('click', function(event){ // event param here

    function doStuff(){
        //Ajax call
        $.ajax({
        ...
        ...
        )}.success(function(){
            ...
        } else {
            var target = $(event.target); // typo here
            target.addClass('disabled');
        }
    });
});
  • 0
    Отлично, событие, которое не прошло, было именно проблемой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню