Подтвердить что ты не робот

Как я могу использовать event.preventDefault с обработчиками событий кликов KnockoutJs?

У меня следующая строка таблицы как шаблон script в KnockoutJs:

    <script id="inboxTemplate" type="text/html">           
    <tr data-bind="click: function() { viewInboxModel.selectAction($data); }">                                 
        <td>...</td>                 
        <td>${ CreateDate }</td>               
        <td data-bind="click: function(e){ e.preventDefault();viewInboxModel.clearAction($data); }"><img src="/Content/images/delete.png" height="16px" width="16px"> </td>
    </tr>            
    </script>

Проблема заключается в том, что когда я нажимаю кнопку "Удалить", она также запускает метод selectAction(). Я попытался использовать e.preventDefault() в обработчике selectAction и обработчике клика clearAction() безрезультатно. Так или иначе, KnockoutJs может предотвратить нажатие основной строки после нажатия кнопки удаления?

4b9b3361

Ответ 1

Если у вас есть ссылка на jQuery, вы можете безопасно вызвать e.stopImmediatePropagation(); в своем обработчике, поскольку он передал объект события jQuery. Если вы не используете jQuery, тогда вы все равно можете сделать что-то вроде:

e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();

http://jsfiddle.net/rniemeyer/mCxjz/