Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择器为类时未触发Jquery事件_Javascript_Jquery_Html - Fatal编程技术网

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'); 
      });