use*_*884 2 jquery templates handlebars.js
我的模板是这样的
{{#users}}
<div id="userRoleInfo">
<input type="hidden" id="userId" value="{{id}}" />
<div class="label">
<label>User permission</label>
</div>
<div class="user-item-right">
// I want to capture click event of this anchor tag
<a href="#" class="updown-arrow" onClick="callUserDetail()" data-control="userBtn"><i class="icon-arrow-big"></i></a>
</div>
{{#checkUser ../user.roleId roleId ../roles}}
<div >Administrator</div>
{{else}}
<select id="selRoleId" data-custom="true">
<option value="0" >Assign Role</option>
{{#each roles}}
<option value="{{roleId}}">{{name}}</option>
{{/each}}
</select>
{{/checkUser}}
</div>
{{/users}}
Run Code Online (Sandbox Code Playgroud)
整个模板都附在里面
<div id="usersMgmtDiv" class="user-mngt-wrapper clearFix">
</div>
Run Code Online (Sandbox Code Playgroud)
当我点击里面的锚标签时,我想显示用户信息
<div class="user-item-right">
Run Code Online (Sandbox Code Playgroud)
我为click事件编写的函数是这样的
japp.users.bindEdit = function () {
if (jQuery('[data-control=userBtn]').size() === 0) {
return;
}
var self = japp;
jQuery('[data-control=userBtn]').each(function() {
jQuery(this).live('click', function (e) {
e.preventDefault();
e.stopPropagation();
if(jQuery(this).is('.active')){
self.users.hideUserBox(jQuery(this));
} else {
self.users.showUserBox(jQuery(this));
}
});
});
Run Code Online (Sandbox Code Playgroud)
但它不会进入这个功能
更新
我试着用javascript方法调用
function callUserDetail(){
japp.users.bindEdit();
}
Run Code Online (Sandbox Code Playgroud)
但这需要2次点击才能实现
这是应该工作还是有其他方法来做到这一点.如果需要更多信息,请告诉我
你的问题就在这里:
jQuery('[data-control=userBtn]').each(function() {
jQuery(this).live('click', function (e) { /* ... */ });
});
Run Code Online (Sandbox Code Playgroud)
[data-control=userBtn]当您尝试迭代它们时,页面上将不会有任何元素.<a>在您将填好的模板添加到页面之后,这些将不存在.此外,live在jQuery 1.7中被弃用并在1.9中删除,所以你不应该再使用它,你应该使用它on.
理想情况下,您有一个已知容器,您可以将模板放入其中.然后你会说:
$('#container').on('click', '[data-control=userBtn]', function(e) {
// Deal with the click in here.
});
Run Code Online (Sandbox Code Playgroud)
并将填好的模板放入#container.
演示:http://jsfiddle.net/ambiguous/PhtP3/
如果你没有这样的容器,那么你可以使用以下的实时形式on:
$(document).on('click', '[data-control=userBtn]', function(e) { ...
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/ambiguous/ZaLnq/
| 归档时间: |
|
| 查看次数: |
5596 次 |
| 最近记录: |