2011-07-21 5 views
1

jqueryを使用してサイドバーを各ページに読み込み、サイドバーにストーリー名、日付、コンテンツタイプ(ストーリー、私はjqueryの.load()関数を使ってサイドバー情報を現在のページの順序付けられていないリストにロードします。サイドバー情報がロードされたら、別のスクリプトを使用しますサイドバーの現在のストーリーのhrefを#にします。問題は、hrefを#に設定するコードは、関数の直前に警告を置くと機能するということです。物語上のjquery change href属性は、alert()関数を追加した場合にのみ機能します。

ユーザーがクリック(ストーリー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

nothing.html

:ここ

が流れています

$(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', '#'); 
}); 

ここで問題は何ですか、なぜアラートを追加した場合にのみ機能しますか?

答えて

3

理由は$("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', '#'); 
}) 
+0

は、これらの機能の両方を持っている良い方法があった場合、私は思っていた、どうもありがとうございまし実行しますので、あなたはそれをコールバック機能を割り当てることができます1つのファイルで任意のパラメータを渡す必要はありませんが、これは完全に機能し、コールバック関数については素晴らしいことを学びました。再度、感謝します! – valon

+0

はい、この方法では、すべて同じファイルにあります – Ibu

関連する問題