Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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注册到动态嵌套可折叠_Javascript_Jquery_Html_Jquery Mobile - Fatal编程技术网

将Javascript注册到动态嵌套可折叠

将Javascript注册到动态嵌套可折叠,javascript,jquery,html,jquery-mobile,Javascript,Jquery,Html,Jquery Mobile,我有一个JQM可折叠文件,它是在点击按钮时动态创建的。我想动态创建嵌套的可折叠文件,我需要为其注册一个javascript,就像我们对普通html控件所做的那样,通过传递“this”作为控件对象 for (var i = 0; i < arrList.length; i++) { var arr = arrList[i].split('#'); var Programme = arr[0]; var arr2 = arr[1

我有一个JQM可折叠文件,它是在点击按钮时动态创建的。我想动态创建嵌套的可折叠文件,我需要为其注册一个javascript,就像我们对普通html控件所做的那样,通过传递“this”作为控件对象

for (var i = 0; i < arrList.length; i++) {
           var arr = arrList[i].split('#');
           var Programme = arr[0];
           var arr2 = arr[1].split('><');
           var revenue = arr2[0];
           var time = arr2[1];

      // Append a new collapsible and store it into a JQuery object                 
      $('#tdDynamic').append('<div id="collapsible_PG' + i + '" 
                                   data-role="collapsible" 
                                   data-collapsed="true" 
                                   data-theme="e" 
                                   data-content-theme="c"'
                                   + ' onclick="onexpand(this);"></div>');

       // Append the list header and store it into a JQuery object
       var collapsible = $('#collapsible_PG' + i);

      collapsible.append('<h3 id="h3Text_PG' + i + '">' 
                           + Programme + '&nbsp;&nbsp;&nbsp;' 
                           + time + '&nbsp;&nbsp;&nbsp;' 
                           + revenue + '</h3>');
//var h3Text = $('#h3Text' + i);
//collapsible.bind('expand', function () { onexpand('#h3Text' + i); });
                            collapsible.collapsible();
    }
但这只是给出了所有动态生成的可折叠文件onclick的最后一个id。 因此,即使我单击第一个可折叠文件,它也会显示最后一个绑定的文件。我猜绑定会被循环中添加的每一个新collpasible覆盖,这就是为什么我要寻找像onclick='funcName(this)'这样的东西。我是JQM的新手,请给我指出正确的方向

我已经提出了各种各样的问题,但找不到任何对我有帮助的


由于该评论很有用,而且您可能已经找到了基于它的解决方案,因此我将其作为一个答案

您可以将
单击
事件处理程序附加到生成
可折叠
的块外。这样,将自动涵盖所有未来项目:

即:

//选择id以开头的所有div。。。
$(“div[id^='collappable_PG'])。在(“单击”,函数(){
//$(此)此处将引用所单击的元素
onexpand($(本));
});
$('#tdDynamic')。追加('');

我看到的是jQuery与本机Javascript的混合。如果您使用的是jQuery,并且可以将事件处理程序附加到HTML标记之外,那么为什么要使用类似于
onclick=foo
的东西呢?因为我的可折叠文件是动态的,每次扩展它的父可折叠文件时都会生成它。单击“我想知道哪个可折叠文件是填充的后续子可折叠文件的父级。”如果不是注释,+1会接受您的提示作为答案。
collapsible.bind('expand', function () { onexpand(collapsible); });
// Select all divs which id starts with...
$("div[id^='collapsible_PG']").on("click", function () {
    // $(this) here will refer to the exactly element clicked
    onexpand($(this));
});

$('#tdDynamic').append('<div id="collapsible_PG' + i + '" 
    data-role="collapsible" 
    data-collapsed="true" 
    data-theme="e" 
    data-content-theme="c"></div>');