JQuery .on() 嵌套点击事件
JQuery .on() Nested Click Event
我有一个非常复杂的表单,它会触发 AJAX 调用来呈现检索特定信息的部分。
我遇到了一个特定场景,我想将 .on('click') 事件绑定到一个行为类似于按钮的元素。问题是,这个元素深深地嵌套在其他元素中,这些元素在部分刷新期间也会被破坏。这是 HTML 的示例。
<div id="locations_grid"><%= render 'table' %>
部分:
<fieldset>
<legend>List</legend>
<div class="lists>
<div class="project_list">
<div id="pagination_link">
<a class="more">
More records
</a>
</div>
</div>
</div>
</fieldset>
在我的示例中,我想将 'click' 事件绑定到 class "more",它嵌套在 div 和字段集的排列中。鉴于 "location_grid" 呈现 html,这将是 .on() 事件的定位点,因为它不会在局部刷新后被销毁 - 所以我最初的尝试是:
$('#locations_grid').on('click','.more', function(){
//do something
});
然而,(据我所知)我怀疑这行不通(事实并非如此),因为“.more”不是“#locations_grid”的直接子代。所以到目前为止,我的尝试是各种组合:
$('#locations_grid').on('click','fieldset .lists .project_list #pagination_link .more', function(){
//do something
});
但是,none 似乎成功地将点击事件绑定到“.more”class。
如果有人知道我遗漏了什么,欢迎提供帮助!
谢谢大家,
你可以像下面的代码一样使用
$('body').on('click','fieldset .lists .project_list #pagination_link .more', function(){
//do something
});
or
$('body').on('click','.more', function(){
//do something
});
我认为它会起作用
你可以试试这个,它会在所有 'a' 上应用点击侦听器 class;
$('div').has(".more").on('click','.more', function(){
//do something;
});
已解决-问题原来是 Rails 资产管道上的 Ruby 没有加载 javascript 文件的问题。
澄清一下,我最初的实施是正确的。
$('#locations_grid').on('click','.more', function(){
//do something
});
我有一个非常复杂的表单,它会触发 AJAX 调用来呈现检索特定信息的部分。
我遇到了一个特定场景,我想将 .on('click') 事件绑定到一个行为类似于按钮的元素。问题是,这个元素深深地嵌套在其他元素中,这些元素在部分刷新期间也会被破坏。这是 HTML 的示例。
<div id="locations_grid"><%= render 'table' %>
部分:
<fieldset>
<legend>List</legend>
<div class="lists>
<div class="project_list">
<div id="pagination_link">
<a class="more">
More records
</a>
</div>
</div>
</div>
</fieldset>
在我的示例中,我想将 'click' 事件绑定到 class "more",它嵌套在 div 和字段集的排列中。鉴于 "location_grid" 呈现 html,这将是 .on() 事件的定位点,因为它不会在局部刷新后被销毁 - 所以我最初的尝试是:
$('#locations_grid').on('click','.more', function(){
//do something
});
然而,(据我所知)我怀疑这行不通(事实并非如此),因为“.more”不是“#locations_grid”的直接子代。所以到目前为止,我的尝试是各种组合:
$('#locations_grid').on('click','fieldset .lists .project_list #pagination_link .more', function(){
//do something
});
但是,none 似乎成功地将点击事件绑定到“.more”class。
如果有人知道我遗漏了什么,欢迎提供帮助! 谢谢大家,
你可以像下面的代码一样使用
$('body').on('click','fieldset .lists .project_list #pagination_link .more', function(){
//do something
});
or
$('body').on('click','.more', function(){
//do something
});
我认为它会起作用
你可以试试这个,它会在所有 'a' 上应用点击侦听器 class;
$('div').has(".more").on('click','.more', function(){
//do something;
});
已解决-问题原来是 Rails 资产管道上的 Ruby 没有加载 javascript 文件的问题。
澄清一下,我最初的实施是正确的。
$('#locations_grid').on('click','.more', function(){
//do something
});