2011-05-16 61 views
0

我使用ajax从其他html文档div#left-column加载内容到当前div#left-column。在div#中,left-column是一个jQuery手风琴插件;当由ajax加载时,不起作用。我怎样才能使这个工作?下面是我的代码:用Ajax加载页面后; jQuery不起作用?

首页的加载jQuery和AJAX脚本:

$(document).ready(function() { 

    var hash = window.location.hash.substr(1); 
    var href = $('#mega-menu-2 li a').each(function(){ 
     var href = $(this).attr('href'); 
     if(hash==href.substr(0,href.length-5)){ 
      var toLoad = hash+'.html #right-column'; 
      $('#right-column').load(toLoad) 
     }           
    }); 

    $('#mega-menu-2 li a').click(function(){ 

     var toLoad = $(this).attr('href')+' #right-column'; 
     $('#right-column').hide('fast',loadContent); 
     $('#load').remove(); 
     $('#wrapper').append('<span id="load">LOADING...</span>'); 
     $('#load').fadeIn('normal'); 
     window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5); 
     function loadContent() { 
      $('#right-column').load(toLoad,'',showNewContent()) 
     } 
     function showNewContent() { 
      $('#right-column').show('normal',hideLoader()); 
     } 
     function hideLoader() { 
      $('#load').fadeOut('normal'); 
     } 
     return false; 

    }); 

}); 

那么这个片段是包含前</head>标签:

$(document).ready(function(){ 
$("#accordion").tabs("#accordion div.pane", {tabs: 'h2', effect: 'slide', initialIndex: null}); 
    }); 

我的HTML如下:

<div id="right-column" class="span-19 last"> 
      <!-- accordion --> 
      <div id="accordion"> 
       <h2 class="current">First pane</h2> 
       <div class="pane" style="display: block"> 
        <img src="images/javascri.png" alt="JavaScript tools" style="float: left; margin: 0 15px 15px 0" /> 
        <h3>Lorem ipsum dolor</h3> 
        <p><strong>Fusce semper, nisi nec pellentesque sollicitudin.</strong> 
        </p> 
        <p style="clear: both">Consectetur adipiscing elit. Praesent 
        bibendum eros ac nulla. Integer vel lacus ac neque viverra ornare. 
        Nulla id massa nec erat laoreet elementum. Vivamus tristique 
        auctor odio. Integer mi neque. </p> 
       </div> 
       <h2>Second pane</h2> 
       <div class="pane"> 
        <h3>Vestibulum ante ipsum</h3> 
        <p>Cras diam. Donec dolor lacus, vestibulum at, varius in, mollis 
        id, dolor. Aliquam erat volutpat. Praesent pretium tristique 
        est. Maecenas nunc lorem, blandit nec, accumsan nec, facilisis 
        quis, pede. Aliquam erat volutpat. Donec sit amet urna quis 
        nisi elementum fermentum. </p> 
       </div> 
       <h2>Third pane</h2> 
       <div class="pane"> 
        <h3>Curabitur vel dolor</h3> 
        <p>Non lectus lacinia egestas. Nulla hendrerit, felis quis elementum 
        viverra, purus felis egestas magna, non vulputate libero justo 
        nec sem. Nullam arcu. Donec pellentesque vestibulum urna. In 
        mauris odio, fringilla commodo, commodo ac, dignissim ac, augue. 
        </p> 
       </div> 
      </div> 
     </div> 
     <!--#right-column--> 

jQuery是除了ajax脚本之外唯一需要的框架工作。我已经阅读了关于.live click函数的一些内容,但我不知道如何添加它以使其起作用。请帮忙。

真诚,

迈克尔

回答

1

你所申请的标签功能加载数据之前。因此,请按照空集或空集的行标签。

您需要在应用标签之前加载数据。

编辑:

假设您正在使用jQueryUI选项卡。

那么有不同的方法来做到这一点,一个我建议,既然你已经使用Ajax处理,就是:

$("#tabs").tabs({ 
     ajaxOptions: { 
      error: function(xhr, status, index, anchor) { 
       $(anchor.hash).html(
        "Couldn't load this tab. We'll try to fix this as soon as possible. " + 
        "If this wouldn't be a demo."); 
      } 
     } 
    }); 

的ajaxOptions强制标签之间切换时通过AJAX加载。

<div id="tabs"> 
    <ul> 
     <li><a href="#tabs-1">Preloaded</a></li> 
     <li><a href="ajax/content1.html">Tab 1</a></li> 
     <li><a href="ajax/content2.html">Tab 2</a></li> 
     <li><a href="ajax/content3-slow.php">Tab 3 (slow)</a></li> 
     <li><a href="ajax/content4-broken.php">Tab 4 (broken)</a></li> 
    </ul> 
    <div id="tabs-1"> 
     Some pre-loaded text that will display when the app loads. 
    </div> 
</div> 

在上面的例子中,你会注意到这些标签是链接有一个网址,而不只是一个锚点。因此,对于具有url的链接,当它被选中时,url的值将被加载到标签中。

所以你需要一种链接到你想要加载的文本,但不应该很难。

+0

你能举个例子吗?我正在加载标签片段之前的ajax脚本。 – user755731 2011-05-16 15:29:58

+0

好吧,我已将手风琴js片段移到内容#footer下方,但仍然无法使用。这是你的意思吗? – user755731 2011-05-16 15:54:18

+0

我在ajax.js脚本'$(“#accordion”)之后的顶部运行在我的accordion.js代码片段中尝试了这一点。live(“click”,function(){0128} (“#accordion div.pane”,{tabs:'h2',effect:'slide',initialIndex:null}); });'现在它可以工作,但手风琴不会打开。我如何让手风琴保持开放? – user755731 2011-05-16 16:21:50

相关问题