我的代码在加载文件时出现延迟。我必须点击<a href="#string" id="hash"></a>
两次以使其显示 .txt 文件。
代码:
<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,我发现如果我自己尝试/失败,然后找出问题所在,学习会更容易。仅阅读教程是不一样的:)
谢谢。
最佳答案
首先,ID
绝不能在您的页面中重复。如果您需要按标识符对元素进行分组,请使用类。
其次,您现在的方法存在的问题是,它会在窗口更改以反射(reflect)单击的 a
中的新 URL 之前读取窗口的 URL。这就是为什么您在出现之前会看到点击内容。如果您需要获取 URL 的哈希值,从被点击的链接的 href
属性中获取会更加容易和简单。
考虑到这一点,试试这个:
<script type='text/javascript'>
$(document).ready(function(){
$("a.hash").click(function() {
var textfileName = $(this).attr("href").replace("#", "");
$("p").load(textfileName + '.txt');
});
});
</script>
<body>
<p>This is a placeholder for your content</p>
<a class="hash" href="#login">Login</button><br />
<a class="hash" href="#register">Register</button><br />
<a class="hash" href="#recovery">Recovery</button>
</body>
关于jquery - 我的 jQuery 加载脚本出现延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9249880/