У меня есть таблица, в каждой строке (тэг tr
) установлены три события: onclick
, onmouseout
и onmouseover
. Для каждой строки первые три тега td
содержат событие onclick
.События Javascript и странное поведение после процесса удаления
<tr onclick="javascript:getWSData(...)" onmouseout="this.className=clTwo" onmouseover="this.className=clThree">
<td onclick="popDivInfo(false, verRicDivCreaInfo('details'))">
Details
</td>
<td onclick="popDivInfo(false, verRicDivCreaInfo('edit'))">
Edit
</td>
<td onclick="if(confirm('Are you sure?')) {getWSData('delete');event.stopPropagation(); } else {alert('Cancelled!')}">
Delete
</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
Насколько я знаю: как только td
«s onclick
запускается цепь событий по умолчанию должен выполнить его на первый, а затем следует выполнить tr
» s onclick
. И это нормально для меня. Но, в случае удаления (третий td
), я не хочу, чтобы цепочка событий шла вперед, поэтому я использовал event.stopPropagation()
;
Стандартное поведение вполне корректно, но я получил одну единственную проблему: как только удаление происходит либо Подробности либо Edittd
перестанет работать. Первый щелчок (после удаления) не работает в лучшем виде (я не полностью понимаю, что происходит), а удаление все еще работает. Когда я нажимаю второй раз, оба td onclick (Подробности & Edit) снова работают.
несколько вещей:
- поведения совершенно правильно перед удалением
- Каждого удаления действия удалить его
tr
с помощью JQueryremove
метода (ничего не случится, если я комментирую эту инструкцию) - Когда этот вопрос Это происходит во всех столбцах (Подробности и Редактирование)
- Проблема не возникает, если я не подтверждаю процесс удаления
- OnClick
tr
«s всегда полностью работает - Первый щелчок (после удаления) на Подробность или Edit действительно частично начать яваскрипт действия (вызвать предзагрузку запущена), но это действие не завершено.
- Даже если действие тд не завершено,
tr
действие всегда выполняется, так что не unusefullstopPropagation()
Есть идеи? У меня вообще нет идей.
Вы уверены, что не устанавливаете event.stopPropagation() для всех событий? –
Я не делаю этого явно, мой страх в том, что он неявно настроен чем-то другим. –
Ваш пример отлично подходит для меня, см. [JsFiddle] (http://jsfiddle.net/dmalinovsky/H3dP7/). Вы должны делать что-то еще в другом коде. –