感谢你对my last noobie jquery question的帮助,自从你做得好以后,我还有另一个给你:)下面的脚本允许我通过从另一个HTML文件中检索一些静态标记来执行一些简单的AJAX并将其插入到我的主页。我遇到了一个我认为与异步性的魔力有关的错误,但由于我是AJAX的新手,我不确定。
当我将鼠标移到链接上时,它会检索HTML并将其插入我的主页。当我将鼠标从链接上移开时,它应该删除插入的新HTML。有时插入HTML时会出现错误,但是当您快速打开/关闭链接时不会删除该错误。我的理论是在实际插入HTML之前调用“鼠标关闭”功能,你同意吗?如果是这样,有关如何解决此问题的任何想法?这是脚本......
$(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();
});
});
非常感谢您提供所有帮助!
编辑*感谢您的回复,我更改了我的脚本并且错误似乎已修复...
$(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();
});
});
我仍然可以在这个脚本中看到一些错误的可能性,但我会将其保存为另一个问题;)谢谢大家!
答案 0 :(得分:1)
为什么不将内容只填充一次并在鼠标移出时隐藏div。如果在DOM中存在div,则再次调用hover,只需更改div的可见性。
如果结果响应相同,每次使用Ajax响应加载div都不是一个好主意。
if ($("#contact_container").length > 0){
// the element exits in the DOM
}
答案 1 :(得分:1)
这听起来不错。
可能的方法是在ajax调用成功时设置一个标志,以指示已插入内容。然后,在hover out函数中,检查是否已设置标志,如果已设置,则调用remove命令。您可以设置一个间隔来检查标志,直到它被设置为止。
或另一种方式 -
在文档中执行加载,隐藏内容,然后分别在悬停和显示时显示和隐藏。
顺便说一下,您的选择器会插入一个标识为<div>
的新contact_container
元素,这是您想要的吗?
答案 2 :(得分:0)
为什么不使用mouseleave?
$("a#contact_link").mouseleave(function(event){
$("a#contact_link").hide("slow");
});
答案 3 :(得分:-1)
我认为有人已回复in your previous question您的DIV选择器错误。你试过修理吗?