我的代码中的一个ajax请求返回一些html,其中某些元素需要自定义事件处理,如下所示:
<div>
<!--some html-->
<button id='specialbutton'></button>
</div>
<script type='text/javascript'>
$("#specialbutton").click(function(e){
//some special handing of html above
});
</script>
我理解从ajax请求返回的javascript是not executed automatically,使用eval()执行返回js被认为是不安全的,通常是不好的做法。但是我需要在这里执行的代码只是返回的html片段的本地代码(在Django模板中),包括它在发送ajax请求的样板html中似乎违反了分离规则。我应该在元素中添加'data-role =“specialbutton”'等属性,并全局使用jQuery.live()来附加处理程序,还是什么?
这里的最佳做法是什么?有什么好建议吗?
答案 0 :(得分:0)
你可以使用一些发布/订阅,这样只有在成功的ajax请求时才触发事件:
$.ajax({
success: function( data ) {
$(document).trigger('some/special/event');
}
})
$(document).on( 'some/special/event', function() {
$("#specialbutton").on( 'click', function(e){
//some special handing of html above
});
});
这将允许您维护代码的分离,并且只有HTML在页面上时才添加事件监听器 以下是关于使用自定义jQuery事件的精彩帖子的链接:http://www.sitepoint.com/jquery-custom-events/