gpt4 book ai didi

javascript - Jquery 更改 href 属性仅在我添加 alert() 函数时有效

转载 作者:行者123 更新时间:2023-11-30 13:30:57 29 4
gpt4 key购买 nike

我正在使用 jquery 将侧边栏加载到我的每个页面中,侧边栏包含一个故事名称列表、日期和内容类型(故事、文章、新闻等),它们被放置在一个无序列表中,当每个页面加载时,我使用 jquery 的 .load() 函数将侧边栏信息加载到当前页面的无序列表中,一旦侧边栏信息加载完毕,我使用另一个脚本将侧边栏中当前故事的 href 设置为#。问题是将 href 设置为 # 的代码只有在我在该函数之前放置一个警报时才有效。

流程如下:

用户点击了一个故事(让这个故事叫做 nothing.html)

nothing.html

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<link rel="stylesheet" href="../../../../css/reset.css">
<link rel="stylesheet" href="../../../../css/index.css">
<script type="text/javascript" src="../../../../js/jquery.js"></script>
<script type="text/javascript" src="../../../../js/storyLoadSidebar.js"></script>
<script type="text/javascript" src="../../../../js/disableLink.js"></script>
<title> Nothing </title>
</head>

<body>

<div id="container">

<div id="main">

<article>

<header>
<h3> Nothing Here </h3>
<time pubdate="pubdate"> July 19, 2011 </time>
</header>

<p> I said there was nothing here, yet. </p>

</article>

</div>

<div id="listWrapper">
<div id="storyList">
<ul></ul>
</div>
</div>

</div>

</body>

</html>

storyLoadSidebar.js

$(document).ready(function() {
$("ul").load("../../../../sidebar.html ul");
});

sidebar.html

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
</head>

<body>

<ul>

<li>
<div class="catDate">
<p> Nothing </p>
<time pubdate="pubdate"> 2011-07-19 </time>
</div>

<div class="storyTitle">
<a id="nothing" href="stories/2011/07/19/nothing.html"> Nothing Here, Yet. </a>
</div>
</li>

</ul>

</body>

</html>

最后是禁用链接的脚本:

disableLink.js

$(document).ready(function() {
var fullPath = window.location.pathname;
var pageName = fullPath.substring(fullPath.lastIndexOf('/') + 1).replace('.html', '');
$('#' + pageName).attr('href', '#');
});

只有我在 href 修改之前向 disableLink.js 添加警报,整个事情才有效,如下所示:

$(document).ready(function() {
var fullPath = window.location.pathname;
var pageName = fullPath.substring(fullPath.lastIndexOf('/') + 1).replace('.html', '');
alert('now it will work');
$('#' + pageName).attr('href', '#');
});

这里有什么问题,为什么只有在我添加警报时它才有效?

最佳答案

原因是 $("ul").load("...") 加载需要一些时间。

你可以给它分配一个回调函数,这样下一段代码只在它完成时运行

$("ul").load("../../../../sidebar.html ul",function () {
var fullPath = window.location.pathname;
var pageName = fullPath.substring(fullPath.lastIndexOf('/') + 1).replace('.html', '');
$('#' + pageName).attr('href', '#');
})

关于javascript - Jquery 更改 href 属性仅在我添加 alert() 函数时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6771561/

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