Lar*_*ell 0 html javascript jquery html-table
我想用jQuery为表添加一个可点击的标题.我这样添加:
$("table.table-legend").prepend('<caption class="edit-select"><a href="javascript:;">Select All - None</a></caption>');
Run Code Online (Sandbox Code Playgroud)
这有效,我确实得到了一个可点击的标题,但我无法弄清楚如何定义被调用的函数.
我试过了:
$('table caption a').on('click', function () {
Run Code Online (Sandbox Code Playgroud)
和
$('.edit-select a').on('click', function () {
Run Code Online (Sandbox Code Playgroud)
以及其他一些方法,但无论如何,我的功能都没有被调用.这样做的正确方法是什么?
$(document).on('click', '.edit-select a', function() {
// do stuff
});
Run Code Online (Sandbox Code Playgroud)
jQuery在运行时只知道页面中的元素,因此添加到DOM的新元素无法被jQuery识别.为了解决这种使用事件委托问题,将新添加的项目中的事件冒泡到jQuery在页面加载时运行时在DOM中的某个点.许多人使用它document
作为捕捉起泡事件的地方,但没有必要在DOM树上走得那么高.理想情况下,您应该委托给页面加载时存在的最近的父级.
请记住,只要在包含元素后将事件绑定到它们,就可以绑定在页面加载期间动态添加到DOM的元素,而不依赖于冒泡和委派.考虑以下示例 -
var newKid = '<div class="kid">Jan</div>';
$('.parent').append(newKid);
$('.kid').click(function() {
var kidName = $(this).html();
var message = kidName + ' got clicked<br />';
$('.whoGotClicked').append(message);
});
var newKid = '<div class="kid">Cindy</div>';
$('.parent').append(newKid);
Run Code Online (Sandbox Code Playgroud)
您认为谁会被添加到"点击"列表中?Marsha包含在原始标记中,Jan在脚本运行时被添加到DOM中,但是在click事件绑定到kid类之前.绑定发生后,Cindy被添加到DOM中.Marsha和Jan都是由click事件处理的,而Cindy则处于寒冷状态.使用事件委托
$(document).on('click', '.kid', function() {...
Run Code Online (Sandbox Code Playgroud)
将确保现在和将来的所有孩子都能得到处理.
归档时间: |
|
查看次数: |
432 次 |
最近记录: |