gpt4 book ai didi

jquery - .live() 或 .livequery()

转载 作者:行者123 更新时间:2023-12-01 00:54:26 25 4
gpt4 key购买 nike

我有一个Ajaxed的网站,Ajax的内容来自其他页面,例如about.html,contact.html。 ajax 从名为 #main-content 的 div 获取内容。但是在 ajax 调用之后,我的其余脚本就中断了。比如tinyscrollbar()插件和其他一些自定义函数。

我搜索了大约 4 天,发现我的问题是 AJAX 请求更改 DOM,并且由于脚本在此之前加载,因此在 ajax 调用之后它不会运行。

如果我是对的,我需要什么来解决这个问题? .live() 还是 .livequery() 插件?

我使用的所有JS都在这个:

var $dd = $('.projects dl').find('dd'), $defBox = $('#def-box');

$defBox.hide();
$('.projects').hover(function(){
$defBox.stop(true, true)
.fadeToggle(1000)
.html('<p>Hover The links to see a description</p>');
});

$dd.hide();
$('.projects dl dt').hover(function(){
var $data = $(this).next('dd').html();
$defBox.html($data);
});

// Ajax Stuff
// Check for hash value in URL
var hash = window.location.hash.substr(1);

// Check to ensure that a link with href == hash is on the page
if ($('a[href="' + hash + '"]').length) {
// Load the page.
var toLoad = hash + '.php #main-content';
$('#main-content').load(toLoad);
}

$("nav ul li a").click(function(){
var goingTo = $(this).attr('href');
goingTo = goingTo.substring(goingTo.lastIndexOf('/') + 1);
if (window.location.hash.substring(1) === goingTo) return false;

var toLoad = $(this).attr('href')+' #main-content',
$content = $('#main-content'), $loadimg = $('#load');

$content.fadeOut('fast',loadContent);
$loadimg.remove();
$content.append('<span id="load"></span>');
$loadimg.fadeIn('slow');
window.location.hash = goingTo;

function loadContent() {
$content.load(toLoad,'',showNewContent)
}
function showNewContent() {
$content.fadeIn('fast',hideLoader);
}
function hideLoader() {
$loadimg.fadeOut('fast');
}
return false;

});

最佳答案

对于插件来说,两者都不是。您只需在 $.load 的完整回调中重新初始化插件即可:

$('#main-content').load(toLoad, function() {
$("#foo").tinyscrollbar();
$("#bar").facebox();
// etc
});

对于事件处理程序,您可以在回调中重新绑定(bind)它们,如上例所示,或者使用 .live.delegate (您似乎已经在使用)确保 future (ajax 替换)元素的绑定(bind)持续存在,例如:

$('.projects dl').delegate("dt", "hover", function() {
...
}, function() {
...
});

或者:

$('.projects dl dt').live("hover", function() {
...
}, function() {
...
});

关于jquery - .live() 或 .livequery(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4914486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com