2012-02-12 88 views
1

我的代码在加载文件时有延迟。我必须点击<a href="#string" id="hash"></a> 两次才能显示.txt文件。延迟我的jQuery加载脚本

代码:

<script type='text/javascript'> 
    $(document).ready(function(){ 
    $("a#hash").click(function(){ 
     var loc = $(window)[0].location; 
     var getUrlString = $(loc).prop('hash').substr(1); 
     $("p").load(getUrlString + '.txt'); 
    }); 
    }); 
</script> 

<body> 
    <p>This is a placeholder for your content</p> 
    <a id="hash" href="#login">Login</button><br /> 
    <a id="hash" href="#register">Register</button><br /> 
    <a id="hash" href="#recovery">Recovery</button> 
</body> 

例如,如果我点击登录第一次在页面加载 - 它不会显示任何东西。 如果我点击登录后点击注册 - 它会显示登录。 如果我点击注册后点击恢复 - 它会显示注册,但如果我再次点击恢复,它会最终显示恢复。

对不起,我的英语不好,或者很难说出我的问题。我还在学习jQuery,如果我自己尝试/失败,我发现学习起来更容易,然后找出问题所在。通过阅读教程是不一样的:)

谢谢。

+2

首先改变'id'。你不能调用相同的ID。使用课堂! – Hadas 2012-02-12 15:18:31

+0

你不使用'id'就是那样;它们需要是唯一的,也就是说,对于整个文档中的* any *元素,相同的'id'不会超过一个实例。所以应该把' 2012-02-12 15:19:58

回答

3
+0

他们将只包含登录,注册,账户恢复等形式。仅限表格。 也感谢您的信息,我以前不知道:) – Kristjan 2012-02-12 15:23:54

+0

嗯,用这个脚本,它不会加载txt文件! – Kristjan 2012-02-12 15:29:30

+0

@Kristjan刚刚更新了代码 - 现在就试试。 – 2012-02-12 15:34:34

1

HTML元素必须有唯一的ID。您应该使用类和类选择器而不是此ID。您也没有关闭您的定位标记(您已关闭了不存在的button)。最后,您需要阻止点击处理程序中的默认操作,以防止实际采取链接。如果没有其他需要触发的处理程序,则可以简单地返回false。否则,您需要使用传递给回调函数e的事件对象,并使用e.preventDefault();

<script type='text/javascript'> 
    $(document).ready(function(){ 
    $("a.hash").click(function(e){ 
     var loc = $(window)[0].location; 
     var getUrlString = $(loc).prop('hash').substr(1); 
     $("p").load(getUrlString + '.txt'); 
     // you probably want an .htm file, though it will likely work 
     // with HTML in a .txt file; browsers are forgiving 
     return false; 
    }); 
    }); 
</script> 

<body> 
    <p>This is a placeholder for your content</p> 
    <a class="hash" href="#login">Login</a><br /> 
    <a class="hash" href="#register">Register</a><br /> 
    <a class="hash" href="#recovery">Recovery</a> 
</body> 

我也有不知道为什么你要一个文本文件加载到款。通常,您想要加载一个HTML文件或执行某些脚本的结果。

+0

这是我为了测试剧本而创作的,一段是我想到的最简单的东西。 :) 但谢谢你! – Kristjan 2012-02-12 15:26:53

+0

@Kristjan - web服务器并不总是提供各种文件(MIME类型)。我怀疑你是在使用文件系统在本地执行此操作,但是您希望小心地养成良好的习惯。 * HTML *文件应该以'.htm'或'.html'扩展名提供,即使没有标记。否则,您可能需要仔细检查您的Web服务器设置,以查看是否允许使用'.txt'文件。 – tvanfosson 2012-02-12 15:31:26