我将 FancyBox 与 Google Maps 一起用于路线规划;用户输入他们的邮政编码,然后通过单选按钮选择酒店:
<input type="text" name="post_code" value="" id="post_code" class="post_code" />
...
<input type="radio" name="venue_id" class="button_1_0" id="radio_1_0" value="166" onClick="if (conditi…) { ... }" data-postcode="CV7 9HZ" /><div><h5>ANSTY HALL, COVENTRY</h5></div>
...
<div id="map_routes_button">
<a class="fancybox button-link" id="button" href="http://local/bookings/maps/routes/3" title="Plan your journey"><img src="http://local/library/images/ui/journey-planner.gif" alt="Journey Planner" width="290" height="70" border="0" style="border: 0px;" /></a>
</div>
...
<script type="text/javascript">
$(".fancybox").on("click", function(ev) {
ev.preventDefault();
$.ajax({
type: "POST",
cache: false,
url: this.href,
data: 's=' + s + '&e=' + e,
success: function (data) {
$.fancybox(data, {
'padding': 0
});
initialize();
}
});
</script>
所有这些工作正常,直到用户选择另一家酒店,此时 FancyBox jQuery 在 $.fancybox(data, {...
未捕获的类型错误:对象函数 (e,t){return new x.fn.init(e,t,r)} 没有方法 'fancybox' 3:3363 $.ajax.success 3:3363 x.Callbacks.c jquery。 js:3074 x.Callbacks.p.fireWith jquery.js:3186 k jquery.js:8253 x.ajaxTransport.send.r
谷歌地图工作正常,我在这里使用的代码正在应用程序的其他地方使用,尽管没有连接到 FancyBox。
此外,邮政编码变量在第一次、第二次和之后的任意次数尝试中传递值。
页面中只有一个 jQuery 和 FancyBox 实例,这消除了对此类错误的最常见解释。
我认为谷歌地图与此无关,它与将可变数据传递给 FancyBox 本身有关,尽管我对 jQuery 的了解在这一点上突然停止了。