0

我遇到了这种情况:有一个日历脚本可以选择日期。选择日期时,一个称为OnClick的函数,以使一个选择框可用于时间选择。现在它不像它的 display:none-->display:block,由 JS 生成的选择。我的目标是自定义此选择。为此,我得到了一个 jquery 脚本“custom.select”,它只是将选择转换为跨度。问题是,如果我在日历调用之后立即将此脚本的调用添加到 onclick 中,则不需要。我很确定它是因为在那个阶段尚未注入 select 的 html。如果我在选择可见后从萤火虫控制台调用 custom.select 函数 - 它工作得很好。所以问题是:我怎么称呼它才能在选择框上发挥它的魔力?

谢谢

4

3 回答 3

0

弄清楚何时添加元素并不是一件容易的事。我在这里回答了一个类似的问题

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

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

于 2013-04-14T23:33:27.557 回答
0

将委托与.on()一起使用:

$(function(){
    $(document).on('click','.classdynamic',function(){
        //do stuff here
    });
});

您应该将事件委托给目标元素最近的静态容器。这意味着通过以下方式进行更改$(document).on('click','.classdynamic',function(){...});$('#staticContainer').on('click','.classdynamic',function(){...});

于 2013-04-14T22:25:07.163 回答
0

好的,感谢克里斯托夫!我从这里使用了 Selector Listeners 脚本:http ://www.backalleycoder.com/2012/08/06/css-selector-listeners/ 因为父母也不在场,所以更加复杂))。所以我所做的就是在日历调用 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);
  });
});
于 2013-04-15T02:31:10.360 回答