次の HTML を検討してください。
<a href="#" id="aElement" data-bind="click: printId">
<span id="spanElement">Click Me</span>
</a>
リンクをクリックすると、呼び出されるprintId関数があります。
printId: function (item, event) {
vm.textTest(event.target.id);
}
event.target.id の値は aElement であると予想されます。これは、クリック バインディングが設定されている要素であるためですが、代わりにspanElementです。これが事実である理由はありますか?
クリックしている実際の「実体」がスパン要素であるためだと思いますが、コーディングの観点からは、代わりにアンカー要素を取得する方が理にかなっていると思います。結局のところ、アンカー タグ内に複数の要素が含まれている可能性があり、ユーザーがアンカー タグ内をクリックした場所に基づいてスローされる ID ではなく、毎回一貫して 1 つの ID を取得したい場合があります。
ただし、これはノックアウトの問題ではなく、JavaScript の問題である可能性があります。何かご意見は?
ここにフィドルがあります: