Click()事件在Jquery Mobile可折叠中调用两次

Click()事件在Jquery Mobile可折叠中调用两次,jquery,ajax,jquery-mobile,click,jquery-mobile-collapsible,Jquery,Ajax,Jquery Mobile,Click,Jquery Mobile Collapsible,Background:我正在通过ajax加载一些资源,使用带有$的promisses.when.apply,在前面的请求完成时执行其他请求。我正在动态加载一些jQuery Mobile可折叠文件和其中的一些内容 当我点击带有链接的特定内容时,他必须打开他的目的地并保存我创建的用于存储数据的自定义atribute的值(数据id) 问题:每次我打开另一个可折叠文件,然后单击内部的此链接时,单击被称为1次加上我以前打开的不同可折叠文件的数量,从而导致错误,即多次调用请购单 下面是一张更清晰的图片:

Background:我正在通过
ajax
加载一些资源,使用带有
$的promisses.when.apply
,在前面的请求完成时执行其他请求。我正在动态加载一些jQuery Mobile可折叠文件和其中的一些内容

当我点击带有链接的特定内容时,他必须打开他的目的地并保存我创建的用于存储数据的自定义atribute的值(
数据id

问题:每次我打开另一个可折叠文件,然后单击内部的此链接时,单击被称为1次加上我以前打开的不同可折叠文件的数量,从而导致错误,即多次调用请购单

下面是一张更清晰的图片:

代码:


有什么想法吗?我真的不知道是什么原因造成了这种情况。

问题是,每次展开可折叠文件时,您都在向所有
“a[data id]”“
子级
$(“#pg_任务”)
添加一个单击处理程序。这就是为什么你的点击事件持续触发一次以上

不必在每个可折叠文件的
collapsableexpand
中添加单击处理程序,只需添加一次即可让工作。因此,只要DOM中存在#pg_任务,就可以附加处理程序:

$( "#pg_tasks" ).off("click","a[data-id]").on( "click","a[data-id]", function() {
    var p_id = '';
    //THE ERROR can be seen here when I use the console 
    console.log('DATA-ID: '+ $( this ).attr('data-id') );
    p_id = $( this ).attr('data-id');
    buildTasksDetail(p_id);
 });

事件委派允许处理程序处理创建处理程序后动态添加的匹配DOM元素。

您确定这是正确的div吗$(“#pg_tasks”),此div中的所有儿童都将生成一个click事件,因为您在
可折叠展开
中有
click
,后一个事件将有多个
click
侦听器。非常感谢您,朋友!我这样做了,它的工作!
$( "#pg_tasks" ).off("click","a[data-id]").on( "click","a[data-id]", function() {
    var p_id = '';
    //THE ERROR can be seen here when I use the console 
    console.log('DATA-ID: '+ $( this ).attr('data-id') );
    p_id = $( this ).attr('data-id');
    buildTasksDetail(p_id);
 });