Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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
html注入完成onclick时的Javascript调用函数_Javascript_Jquery_Ajax_Onclick - Fatal编程技术网

html注入完成onclick时的Javascript调用函数

html注入完成onclick时的Javascript调用函数,javascript,jquery,ajax,onclick,Javascript,Jquery,Ajax,Onclick,我遇到了这种情况: 有一个日历脚本来选择日期。选择日期时,一个名为onclick的函数将使选择框可用于时间选择。现在它不像它的display:none->display:block,选择由JS生成。我的目标是定制这个选择。为此,我得到了一个jquery脚本custom.select,它只是将select转换为span。问题是,如果我在日历调用之后立即将此脚本的调用添加到onclick中,它就不会执行。我很确定这是因为在那个阶段select的html还没有被注入。如果我在选择可见后从firebug

我遇到了这种情况: 有一个日历脚本来选择日期。选择日期时,一个名为onclick的函数将使选择框可用于时间选择。现在它不像它的display:none->display:block,选择由JS生成。我的目标是定制这个选择。为此,我得到了一个jquery脚本custom.select,它只是将select转换为span。问题是,如果我在日历调用之后立即将此脚本的调用添加到onclick中,它就不会执行。我很确定这是因为在那个阶段select的html还没有被注入。如果我在选择可见后从firebug控制台调用custom.select函数,它就可以正常工作了。 所以问题是:我怎么称呼它,让它在选择框上变魔术

谢谢

与以下人员一起使用委派:

您应该将事件委托给目标元素最近的静态容器。这意味着更改$document.on'click','.classdynamic',函数{…};
类似于:$'staticContainer'。单击,'.classdynamic',函数{…}

确定何时添加元素并非易事

最好的方法是对创建select的脚本进行一些控制,并将代码附加到该脚本中。实现这一点的一种方法是使用面向方面编程AOP——这也不容易


对于当前的浏览器,最简单的方法是在循环中使用setTimeout并轮询页面,直到元素存在。

好的,多亏了Christophe!我在这里使用了选择器侦听器脚本: 更复杂的是,父母也不在场。因此,我所做的是在日历调用lol之后将侦听器连接到onclick。我需要制作另一个函数,以使其与脚本一起工作,下面是代码:

var doSelect = function(){
  jQuery('#timeslots').customSelect();
};
jQuery(document).ready(function(){
  jQuery('.td_calendar').on('click','#anchor1',function(){
      cal.select(document.forms['frmRequest'].startdate,'anchor1','yyyy-MM-dd');
      document.getElementById('slots').addSelectorListener('#timeslots', doSelect);
  });
});

这就是我对你的建议所做的:jQuerydocument.readyfunction{jQuery'.td_calendar''on'click','anchor1',function{cal.selectdocument.forms['frmRequest'].startdate,'anchor1','yyyy-MM-dd';jQuery'timeslots'.customSelect;};它仍然不起作用。“anchor1”在您的页面中多次使用相同的ID?使用on不会改变脚本运行时元素还不存在的事实。anchor1在所需链接上只存在一次。正如Christophe所说元素还不存在。。在调用customSelect之前是否需要等待元素出现?
var doSelect = function(){
  jQuery('#timeslots').customSelect();
};
jQuery(document).ready(function(){
  jQuery('.td_calendar').on('click','#anchor1',function(){
      cal.select(document.forms['frmRequest'].startdate,'anchor1','yyyy-MM-dd');
      document.getElementById('slots').addSelectorListener('#timeslots', doSelect);
  });
});