繁体   English   中英

jQuery事件未绑定到剔除条件元素

[英]jQuery Events not binding to knockout conditional elements

我有一个简单的loggedIn属性,它是一个作为布尔值的ko绑定,因此当一个人登录(检查带有异步xhr以确认服务器端的检查)时,应在标头中显示一个元素:

<!-- ko if: loggedIn -->
<div class="loggedin">
  <a class="logout">Log Out</a>
</div>
<!-- /ko -->

<!-- ko ifnot: loggedIn -->
<div class="loggedout">
  <a class="login">Log In</a>
  <a class="signup">Signup</a>
</div>
<!-- /ko -->

上面是从显示/隐藏角度进行的工作,即,如果loggedIntrue则显示“ Log Out链接。

.on的问题是将jQuery绑定到元素,即使使用.on

$('.loggedin').on('click', '.logout', function () {
   // Never fires...
});

如果刷新页面,它将起作用,但是任何动态更改都使我无法绑定到click(或任何其他)事件。

更新:我创建了一个小提琴来显示问题

做到这一点的一种好方法是在您的vm中拥有一个可以完成工作的函数,而不是依赖于jquery事件。 然后将click事件绑定到您的函数。

<div class="loggedout" data-bind="click: someVMFunction">
<a class="login">Log In</a>
<a class="signup">Signup</a>
</div>

我发现的解决方案是使用kovisible

<div class="loggedin" data-bind="visible: loggedIn()">
   <a class="logout">Log Out</a>
</div>

<div class="loggedout" data-bind="visible: !loggedIn()">
   <a class="login">Log In</a>
   <a class="signup">Signup</a>
</div>

这似乎完美地工作,允许jQuery毫无问题地绑定元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM