在我的网页上,一切都很好。
我的js工作得非常好,但点击任何页面,页面加载ajax但是某些功能不起作用,例如我的bootstrap轮播或我的parallax.js插件..
我该如何进行活动管理?
我正在使用youtube spf plugin
我页面上的一些js例子
if (!$(".scene").length) return false;
var q = document.getElementsByClassName("scene")[0];
var r = new Parallax(q, {
calibrateX: false,
calibrateY: true,
invertX: false,
invertY: true,
limitX: false,
frictionX: .2,
frictionY: 4,
originX: 0,
originY: 1
});
$('.img-area').cycle({
fx: 'fadeout',
speed: 950,
timeout: 100
}).cycle("pause");
$(".otel-history-list").on("click",function(){
var historyName = $(this).find(".history-current-name").text();
var historyDateIn = $(this).find(".history-current-datein").text();
var historyDateOut = $(this).find(".history-current-dateout").text();
var historyKisi = $(this).find(".history-current-kisi").text();
$(".input-form-ara input").val(historyName);
$(".otel-giris-cikis #checkin").val(historyDateIn);
$(".otel-giris-cikis #checkout").val(historyDateOut);
$(".kisi-sayi-otel-sec .kisi-count").text(historyKisi);
});
或类似这些代码
和我的ajax代码
$(function () {
spf.init();
NProgress.configure({ showSpinner: false });
$(document).on('spfrequest', function (event) {
NProgress.set(0.4);
});
$(document).on('spfprocess', function (event) {
NProgress.set(0.6);
NProgress.set(0.8);
});
$(document).on('spfdone', function (event) {
NProgress.set(1.0);
NProgress.done();
});
$(document).on('spfhistory', function (event) {
NProgress.set(0.7);
NProgress.set(0.9);
NProgress.set(1.0);
NProgress.done();
});
});
我正在使用bootstrap,parallax.js,cycle2.js,select2 plugin
答案 0 :(得分:1)
我过去曾回答过类似的问题,所以我在下面重申:
我不确定你的完整代码集是什么,但根据你发布的内容,我猜你的几个html元素(附有JQuery事件处理程序)都会生成并重新生成在加载原始DOM之后,可能会多次使用您的ajax函数生成。
这是您在Ajax代码触发后不会触发某些事件的最可能原因。当使用Ajax以编程方式(重新)生成这些元素时,附加到html元素(例如div)的事件处理程序会“分离”。
因此,你想要做的是将事件处理程序“附加”到DOM树中的更高级别(最高的是你的html),你肯定不会“以编程方式”重新生成,那么你想要检查是否存在DOM内部的元素。然后在找到此元素时运行您的函数。
举个例子,你的代码中有这个onclick函数:
$(".otel-history-list").on("click",function(){
//your actions
});
具有类“otel-history-list”的元素很可能是在页面加载后由Ajax调用生成或重新生成的,因此会从onclick事件侦听器中分离出来(参见上面的#1-#2)。
因此,要在上面的#3之后重写代码,你需要将事件监听器附加到Ajax不会重新生成的东西,然后只查找其中包含您感兴趣的类的特定元素。 :
$(document).on("click",".otel-history-list", function(){
//your actions
});
希望这有帮助!