如何使用jquery创建动态侦听器来运行不同的ajax任务?
例如,stackoverflow
每个评论都有一个删除链接,其中没有onlick
,所以我猜他们创建了一个类监听器,但是它如何知道在哪个id中使用ajax url?
答案 0 :(得分:1)
您的HTML可能包含以下内容:
<span class="delete-link" data-id="15">Delete comment 15</span>
然后,使用jQuery,您可以在该类上添加回调:
$('.delete-link').click(function() {
var comment_id = $(this).data('id');
/* send ajax request for that comment ID */
});
答案 1 :(得分:1)
我相信这是由评论的id
祖先的tr
属性完成的。
HTML看起来像这样:
<tr id="comment-7507745" class="comment">
<td class="comment-actions">
<table>
<tbody>
<tr>
<td class="comment-score">
<span> </span>
</td>
<td>
<a class="comment-up comment-up-off" title="this is a great comment">upvote</a>
</td>
</tr>
<!-- and a whole bunch more -->
</td>
</tr>
因此代码可能会使用类似的代码实现:
$(document).delegate('a.comment-up', 'click', function(event) {
var commentId = $(this).closest('tr.comment').attr('id').substr(8);
// do something with the comment id
});
因此数据存储为属性,DOM遍历用于查找存储数据的相关元素。
答案 2 :(得分:0)
使用绑定方法
$('a', '#container').bind('click',function(e){
/* stuff */
});
(解除绑定,删除)
或者,如果您异步添加新链接,则可以使用实时功能
$('a', '#container').live('click',function(e){
/* stuff */
});
(与生活相反,死亡(事件))
单击链接,#container的子节点将在bind / live的参数内调用匿名函数,然后可以通过检查其索引,类或任何内容来检查单击了哪个链接 - 并运行不同的代码。