为什么Jquery不能访问我页面上导入的元素?
Why can't Jquery access an imported element on my page
我有一个更改,从数据库中列出记录,我的主页使用第二个页面从它加载信息。我希望用户能够点击一个"x",并能够删除记录。
我有我的主页'index。php'我有加载器页面'get_results。php'
因此,当我加载index.php时,JS加载,然后转到get_results.php,然后在屏幕上显示输出,但是,当我单击'x'尝试删除一个部分时,它不起作用。为了添加,我在get_result.php页面上运行了JS脚本,删除工作很好。
我不知道如何解决这个问题,我认为这是因为新的数据(get_results)正在加载index.php文档后。
我想改变当这个数据是加载的,但我仍然会有同样的问题,因为用户可以点击一个按钮,它摆脱了数据,并把新的数据在那里。
当读取文档时,我运行以下命令:
$(".search_results_container").load("get_results.php?service_type=auto #results_output");
将新数据加载到它的容器中。
然后当点击X时,它应该运行以下代码:
$(".delete_result").on("click", function( e ){
e.preventDefault();
var result_id = $(this).data("delete-id");
// post data to delete page
$.post("delete_results.php?action=delete&result_id=" + result_id, function( data ){
// Out delete data
console.log(data);
// Refresh list
} );
});
这是要加载到容器中的HTML
<ul class="data_list" id="result_list">
<li>
<div class="result_info">
<a href="?action=edit_result&result_id=5" class="update_links">
<h2>
Test data 1
<small>Testing</small>
</h2>
</a>
</div>
<div class="result_delete_icon">
<a href="?result_id=5&action=delete" class="delete_result" data-delete-id="5">
<i class="fa fa-times" style="float: right;"></i>
</a>
</div>
</li>
<div class="result_info">
<a href="?action=edit_result&result_id=5" class="update_links">
<h2>
Test data 1
<small>Testing</small>
</h2>
</a>
</div>
<div class="result_delete_icon">
<a href="?result_id=5&action=delete" class="delete_result" data-delete-id="5">
<i class="fa fa-times" style="float: right;"></i>
</a>
</div>
</li>
我真的不知道如何得到这个工作,我想也许有些东西需要刷新,因为它似乎是Jquery没有在dom中找到元素,但我认为,如果我每次引用元素,而不是将其存储在一个变量中,它会再次通过dom来获取它。
这不是你想的那样:
$(".delete_result").on("click", function( e ){
这是调用选择器".delete_result"
一次,识别当时存在的元素,并将单击处理程序附加到这些元素。处理程序附加到元素,而不是附加到选择器。因此,在执行此代码后添加到页面中的任何元素都不会附加单击处理程序。
相反,你要这样做:
$(document).on("click", ".delete_result", function( e ){
这仍然只执行一次,但是将处理程序附加到document
(在DOM的生命周期内保持不变)。实际上,在层次结构中任何共同不变的父元素都可以代替document
。第二个选择器".delete_result"
在每个事件上使用来从所选的子元素过滤事件。因此,在DOM生命周期后期添加到document
中的任何元素仍然会将其单击事件"冒泡"到document
,并由第二个选择器识别。
关于更多的例子和信息,我以前写过。
您需要delegate
您的事件http://learn.jquery.com/events/event-delegation/
$(document).on("click", ".delete_result",function( e ){...
- 在Java中从ArrayList中导入唯一元素
- 未捕获的不变冲突:元素类型无效(react、webpack、循环导入)
- 导入 serval WebComponent 时,上一个自定义元素被下一个元素覆盖
- 如何让导入的 css 字体/图标对影子 dom 中的元素产生影响
- 如何使已导入 ajax 的元素可观察
- 如何从导入的 html 中的脚本访问导入的 html 的元素
- 聚合物HTML导入自定义元素
- 将JavaScript Polymer元素导入Dart
- 如何在JSFiddle中导入核心元素和纸张元素
- 导入后聚合物更新DOM元素
- 向画布中导入的svg元素添加侦听器
- 为什么Jquery不能访问我页面上导入的元素?
- 当使用动态HTML导入在模板中盖章时,聚合物元素会损坏尺寸
- Mootools .destroy 方法在将元素导入 DOM 并加载后不起作用
- 如何关注导入的React组件中的元素?
- 聚合物:如何动态导入元素
- 将焦点设置在使用jQuery加载方法导入的其他页面的元素上
- 如何将导入的样式表应用于自定义元素的模板标记内容
- IE9 导入内联 SVG <图像>元素已损坏
- 聚合物自定义元素:通过导入重用css