Noobie Jquery问题-我在脚本中发现了一个bug,不知道如何修复它
谢谢你在这方面的帮助,既然你做得很好,我还有另一个例子:)下面的脚本允许我通过从另一个HTML文件中检索一些静态标记并将其插入我的主页来执行一些简单的AJAX。我遇到了一个bug,我认为它与异步的魔力有关,但由于我是AJAX新手,我不确定 当我将鼠标移到链接上时,它会检索HTML并将其插入我的主页。当我将鼠标从链接上移开时,它应该会删除插入的新HTML。有时插入HTML时会出现错误,但当您非常快地在链接上/下移动鼠标时不会删除错误。我的理论是在实际插入HTML之前调用“mouse off”函数,你同意吗?如果是这样的话,有没有关于如何解决这个问题的想法?这是剧本Noobie Jquery问题-我在脚本中发现了一个bug,不知道如何修复它,jquery,ajax,Jquery,Ajax,谢谢你在这方面的帮助,既然你做得很好,我还有另一个例子:)下面的脚本允许我通过从另一个HTML文件中检索一些静态标记并将其插入我的主页来执行一些简单的AJAX。我遇到了一个bug,我认为它与异步的魔力有关,但由于我是AJAX新手,我不确定 当我将鼠标移到链接上时,它会检索HTML并将其插入我的主页。当我将鼠标从链接上移开时,它应该会删除插入的新HTML。有时插入HTML时会出现错误,但当您非常快地在链接上/下移动鼠标时不会删除错误。我的理论是在实际插入HTML之前调用“mouse off”函数,
$(function()
{
//HOVER EFFECT FOR CONTACT LINK
$('a#contact_link').hover(function()
{
$('<div id="contact_container" />').load('contact.htm #contact', function()
{
$(this).stop()
.hide()
.insertAfter('#header')
.slideDown(250);
});
},
//MOUSE OFF EFFECT FOR CONTACT LINK
function()
{
$('#contact_container').remove();
});
});
$(函数()
{
//接触链接的悬停效果
$('a#contact_link')。悬停(函数()
{
$('').load('contact.htm#contact',function()
{
$(this.stop())
.hide()
.insertAfter(“#标题”)
.向下滑动(250);
});
},
//联系人链接的鼠标关闭效果
函数()
{
$('#contact_container')。删除();
});
});
非常感谢您的帮助
编辑*多亏了您的回复,我更改了脚本,错误似乎得到了修复…
$(function()
{
//RETRIEVE THE MARKUP AT PAGE LOAD
$('<div id="contact_container" />').load('contact.htm #contact', function()
{
$(this).hide()
.insertAfter('#header');
});
//HOVER EFFECT FOR CONTACT LINK, SHOW THE MARKUP
$('a#contact_link').hover(function()
{
$('#contact_container').stop()
.slideDown(250);
},
//MOUSE OFF EFFECT FOR CONTACT LINK, HIDE THE MARKUP
function()
{
$('#contact_container').stop()
.hide();
});
});
$(函数()
{
//在页面加载时检索标记
$('').load('contact.htm#contact',function()
{
$(this.hide())
.insertAfter(“#标题”);
});
//联系人链接的悬停效果,显示标记
$('a#contact_link')。悬停(函数()
{
$(“#联系_容器”).stop()
.向下滑动(250);
},
//鼠标关闭效果对于联系人链接,隐藏标记
函数()
{
$(“#联系_容器”).stop()
.hide();
});
});
我仍然可以看到这个脚本中可能存在一些bug,但我将把它留作另一个问题;)谢谢大家 为什么不只填写一次内容,并在鼠标不在时隐藏div。如果DOM中存在div,则再次调用hover时,只需更改div的可见性即可 如果得到的响应相同,那么每次加载带有Ajax响应的div都不是一个好主意
if ($("#contact_container").length > 0){
// the element exits in the DOM
}
听起来不错
一种可能的解决方法是在ajax调用成功时设置一个标志,以指示内容已插入。然后,在hover out函数中,检查标志是否已设置,如果已设置,则调用remove命令。您可以设置一个间隔来检查标志,直到它被设置为止
或者以另一种方式-
执行“装入文档准备就绪”,隐藏内容,然后分别将鼠标悬停在上方和向外显示和隐藏
顺便说一下,您的选择器将插入一个新的
元素,id为contact\u container
,这就是您想要的吗?我想有人已经回答说您的DIV选择器错了。你试着修好了吗?你为什么不使用mouseleave
$("a#contact_link").mouseleave(function(event){
$("a#contact_link").hide("slow");
});
他正在使用一个get请求,因此它将被缓存。问题是,检查div是否存在的简单方法是什么?由于对我上一个问题的回答,我在这个脚本中的div选择器工作良好。谢谢,这是一个很好的提示,您的观点很好。这是我想要的,但可能不是每次链接悬停的时候。这不会产生与上面相同的行为吗?