2009-06-20 6 views
1

У меня есть функция, которая позволяет пользователям редактировать строку в таблице, открывая данные в модальном режиме. Прямо сейчас вся строка будет запускать модальную. Я хочу изолировать последний td, содержащий ссылку, которая запускает функцию, которая обрабатывает данные для обработки.jquery tablerow click function

Случается, что при нажатии этого последнего td модальный режим открывается и запускается функция готовности. Я пытаюсь прекратить выпуск модала.

У меня также есть строка с указателем мыши на каждой строке таблицы.

Это, как я связать строки таблицы с помощью функции модальной:

$("#table").find("tr").click(function(e) { 

//code to open model 
} 

Это, как я огнь готовой функции:

$("#table tr td:last-child a").click(function(e) { 
//code to open model 
} 

ответ

1

я считаю, вам нужно вызвать e.stopPropogation(), чтобы предотвратить событие от propogating:

$("#table tr td:last-child a").click(function(e) { 
    //code to open model 
    e.stopPropagation(); 
    return false; 
} 

Объяснение:

События распространяются от самого «конкретного» элемента до их родителей , Это называется барботированием, и в этом случае ваш второй модал уволен, потому что событие щелчка пузырится от элемента A до элемента TR.

Я считаю, что все события распространяются и пузырятся. Возврат false просто отменяет действие по умолчанию элемента A, которое должно следовать за ссылкой ... оно не останавливает объект события.

Это good explanation всего этого.

+0

Для событий onClick это необязательно. Попробуй. – molf

+0

Я пробовал все ответы ... этот работает. Я не понимаю, почему он работает как с возвратом, так и без него. Спасибо, Wali – wali

+0

@Wali, см. Мое сообщение, я добавил объяснение. –

1

Просто добавьте "return false;":

$("#table tr td:last-child a").click(function(e) { 
    // whatever should happen when clicking the anchor 
    return false; 
} 

Это предотвращает распространение события в окружающую среду tr.

0

почему вместо того, чтобы найти по ссылке в последней ячейке любой строки в таблице просто присвоить идентификатор или класс в ссылку

как ...

, а затем добавить дисплей: блок свойства от CSS, что делает якорь, чтобы заполнить всю область она содержится в.

затем просто

$('.anchorclass').click(function(){ 

// сделать что-то здесь

});