Javascript 选择器为类时未触发Jquery事件
我有以下选择Javascript 选择器为类时未触发Jquery事件,javascript,jquery,html,Javascript,Jquery,Html,我有以下选择 jQuery("table[class='google-visualization-table-table']").on("click", "tr", function(){alert('i am here'); } 我正在使用GoogleAPI创建表 下面是我的HTML <table class="google-visualization-table-table" cellspacing="0"> <tbody> <tr class="go
jQuery("table[class='google-visualization-table-table']").on("click", "tr", function(){alert('i am here'); }
我正在使用GoogleAPI创建表
下面是我的HTML
<table class="google-visualization-table-table" cellspacing="0">
<tbody>
<tr class="google-visualization-table-tr-head">
<tr class="google-visualization-table-tr-even">
<tr class="google-visualization-table-tr-odd">
<td class="google-visualization-table-td">MONTEFIORE MEDICAL CENTER</td>
<td class="google-visualization-table-td">208604209.00</td>
<td class="google-visualization-table-td">666813000.00</td>
<td class="google-visualization-table-td">68.72</td>
<td class="google-visualization-table-td">31.28</td>
</tr>
<tr class="google-visualization-table-tr-even">
<tr class="google-visualization-table-tr-odd">
</tbody>
</table>
蒙特菲奥雷医疗中心
208604209
666813000
68.72
31.28
试试这个
jQuery(document).on("click", "table.google-visualization-table-table tr", function(){
alert('i am here');
});
这将适用于
表中的所有标签tr
,无论是已经存在的还是以后动态添加的。这些元素似乎是由GOOGLE API动态生成的。所以用文档绑定它
jQuery(document).on("click", "table.google-visualization-table-table tr", function(){
alert('i am here');
});
这是您的代码
jQuery("table[class='google-visualization-table-table']").on("click", "tr", function () { alert('i am here'); }
您缺少的只是结尾的breakets;“
请使用我的更新代码
$(document).ready(function () {
jQuery("table[class='google-visualization-table-table']").on("click", "tr", function () { alert('i am here'); });
});
使用jquery时,如果您将#用于ID和。对于类,只需标记名
$(".table.google-visualization-table-table > table").on("click", "tr", function(){
alert('i am here');
});
除了学习css选择器外,>还将选择该类的所有子表元素。jQuery选择器
CLASS-$(“.CLASS”)
ID-$(“#ID”)
HTML标记-$(“标记”)
您还可以组合选择器,例如,$(“tag.class”)
现在,如果元素已经不在页面上,请使用事件委派绑定
$(parent-selector).on(event,target-selector,callback);
就你而言:
$(document).on("click", "table.google-visualization-table-table", function(){
alert('i am here');
});
注意:父选择器必须是绑定事件时DOM中存在的父元素,通常人们使用文档
和正文
,但是对于性能,您必须拥有距离目标最近的父级,只要在运行代码时存在该表(请参见下文)(并且如果您有此缺少的),该代码将起作用代码>在实际代码的末尾)。不过它很易碎,我不推荐它。我会使用一个类选择器,例如
table.google-visualization-table-table
不是
因为如果向表中添加任何其他类,后者将中断
因此,有两种选择:
在创建表之前不要运行该行代码
继续您的事件委派,在要将表添加到的任何容器上挂起单击,如下所示:
jQuery("some container").on("click", "table.google-visualization-table-table tr", function(){alert('i am here'); });
只需确保在运行时容器存在。作为最后的手段,使用jQuery(document)
,但几乎总是有更好的选择
使用事件委派。根据您使用的jQuery版本的不同,有不同的方法来实现这一点。假设您的版本相当新,将click事件绑定到一个主体,然后将其委托给table.google-visualization-table-table tr。或者您也可以将事件处理程序绑定到dom ready上存在的table.google-visualization-table-table的父元素,而不是body
$('body').on("click", "table.google-visualization-table-table tr", function(){
alert('i am here');
});
有没有一种方法可以使用表作为选择器的一部分,啊你编辑它“试试这个”后面跟着一个代码转储是没有用的。说出你改变了什么,为什么。(不是我的dv)此表是动态添加的吗?是的,它添加的动态使用事件委派。绑定主体上的事件处理程序或dom ready上存在的任何父元素…性能提示:选择器越短,选择元素的速度越快。此外,属性选择器比类选择器慢。因此,与其使用table[class='google-visualization-table-table']
,不如使用.google visualization table
$('body').on("click", "table.google-visualization-table-table tr", function(){
alert('i am here');
});