0

我希望在加载 HTML 后立即显示一个箭头(无需等待插件的其他 JavaScript 加载。所以我尝试了这个:

<script type="text/javascript">
  function PreLoad() {
    $('.page-template-front-page-2-php #header .container').append('<div id="top-line-arrow-home"></div>');
    $('.post-type-archive-games #menu-item-402').append('<div id="top-line-arrow"></div>');
    $('.post-type-archive-news #menu-item-420').append('<div id="top-line-arrow"></div>');
    $('.post-type-archive-jobs #menu-item-412').append('<div id="top-line-arrow"></div>');
    $('.page-template-about-page-php #menu-item-19').append('<div id="top-line-arrow"></div>');
    $('.page-template-contact-page-php #menu-item-22').append('<div id="top-line-arrow"></div>');
  }
</script>

<body <?php body_class(); ?> onload="javascript:PreLoad();">

但是在所有其他 JavaScript(在标题中)加载之后,箭头仍然出现。

有没有其他方法可以解决这个问题?

4

2 回答 2

0

有几种替代方法,您的函数可能PreLoad()需要一些时间来执行,这让其他 js 代码更早执行,因为我相信在您的函数完成执行后没有条件阻止其他代码执行.

将其他 javascript 代码放在正文部分和PreLoad()头部部分也无济于事。

您可以尝试的另一种选择是将您的PreLoad()in document ready 事件正常放置,然后将您的其他 javascript 代码移入$(window).load(). 因为$(window).load()稍后执行一小部分时间,然后记录就绪事件。

另一种方法是使用$.defered。

var FirstFunction = function () {
 // creating a deferred object
var obj = $.Deferred();

 // do something with your code

setTimeout(function () {
 //call `resolve` on the deferred object once you're done!
 obj .resolve();
}, 3000);

 // return the deferred object
 return obj;
};

 // define SecondFunction here
var SecondFunction = function () {
 console.log('This is another function');
};

/* call FirstFunction and use the `done()` method
with `SecondFunction ` as it's parameter */

FirstFunction().done(SecondFunction);

希望这可以帮助你。

于 2013-05-15T07:43:07.370 回答
0

使用外部 .js 文件并在 css 之前引用它和头部的 jquery 以确保它首先加载

<head>
  <title>
  </title>
  <script type="text/javascript" src="js/jQuery-v2.js"></script>    
 <script type="text/javascript" src="js/external.js"></script>
 <link rel="stylesheet" type="text/css" href="css/style1.css" />
</head>
于 2013-05-15T07:51:45.260 回答