单击行中的复选框会触发行敲除绑定上的事件绑定

Joy*_*Joy 13 knockout-2.0 knockout.js

我在那里的Click事件被绑定到一个场景<tr>,并检查值绑定到里面复选框<td?<tr>.现在问题是当单击该行时,事件被触发就好了.但是,如果我单击该复选框,则可观察值也会更改为行,并触发行单击事件.如何避免这种情况

<tbody data-bind="foreach:Mails">
    <tr data-bind="click:$root.navigateToMail">
        <td style="width: 15px">
            <input type="checkbox" data-bind="checked: isSelected">
            @*<input type="checkbox">*@
        </td>
        <td data-bind="text: From">
        </td>
        <td data-bind="text: To">
        </td>
        <td data-bind="text: Subject">
        </td>
        <td data-bind="text: MailDate">
        </td>
    </tr>
</tbody>
Run Code Online (Sandbox Code Playgroud)

事件是:

 ko.utils.arrayForEach(data.mails, function (mail) {
                    mail.isSelected = ko.observable(false);
                    mail.isSelected.subscribe(function (myvalue) {
                        console.log(myvalue);
                    });
                });
 self.navigateToMail = function (mail) {
        location.hash = mail.Folder() + '/' + mail.Id();
    };
Run Code Online (Sandbox Code Playgroud)

我修剪了不必要的代码.只是把问题发生了.

bad*_*tax 24

您基本上需要取消点击事件冒泡.

这是一个如何做到这一点的例子:

<div data-bind="click: parentClick">
    <input type="checkbox" data-bind="checked: isSelected, click: function(){return true}, clickBubble: false">
</div>?
Run Code Online (Sandbox Code Playgroud)

见这里:http://jsfiddle.net/2M9XP/1/