2015-11-20 43 views
0

我有一个页面,您可以点击某个日历日(例如星期一的第一天),并且它会在页面其他地方的div中的某些课程时间加载ajax,并将每个div都包含在一个名为timeSpan的类中。然后我让用户点击其中一个时间点(突出显示它)来选择一个。这在Firefox中效果很好,但我今天发现它在Safari或Chrome中无法使用。还没有试过IE,因为我在Mac上。这是代码:jQuery on()不适用于Chrome,Safari。在Firefox中工作

jQuery.root.on("click", ".timeSpan", function(event) { 

我已经把它作为.delegate()而不是.on()并且工作得很好。然后我在这里搜索并找到了使用.on的建议,所以我换了。仍然适用于FF,但不适用于其他任何东西。我使用jQuery 2.1.4,但如果需要,我可以更改。

这是呈现时间跨度的div行:

html+= "<div class='timeSpan' data-classdate='" + class_date + class_date_endTime + "' data-date='" + class_date2 + "' data-eventid='" + eventid + "'>" + the_date + ",<br>" + start_time + " to " + end_time + "</div><br>"; 

任何想法如何解决这一问题?谢谢!

+1

不知道为什么你已经使用'jQuery.root',也许新的jQuery 2.xx的拥有它..我会检查..你可以试试'的​​jQuery(文档).on'代替.. – vinayakj

+0

是什么'jQuery.root'? – epascarello

+0

检查了新版本,没有找到'root'属性,但是发现指向'document'但是在内部使用的'rootjQuery'属性。非常令人惊讶的是,它在Firefox中工作,正如你所说的。 – vinayakj

回答

1

由于您正在动态生成html,因此您需要将单击事件委派给文档。

html+= "<div class='timeSpan' data-classdate='" + class_date + class_date_endTime + "' data-date='" + class_date2 + "' data-eventid='" + eventid + "'>" + the_date + ",<br>" + start_time + " to " + end_time + "</div><br>"; 

$(document).on("click", ".timeSpan", function(event) { // delegates the click event on the dom and during event invocation checks class timespan 

}); 
相关问题