2011-04-26 47 views
0

我試圖將一個功能集成到另一個功能,我很困惑。集成一個jQuery功能到另一個標籤頁UI

我想要做的是添加一個jQuery函數,它將調用一個隨機引號,並且我希望該函數在jQuery Tabs UI中的選項卡更改上觸發。

這是隨機的報價功能:

$.get('quotes.txt', function(data) { 
     var quotes = data.split("\@"); 
     var idx = Math.floor(quotes.length * Math.random()); 
     $('.quotes').html(quotes[idx]); 
    }); 

低於這個是標籤的init(與崩潰的div其他功能一起,當標籤被改變):

$(document).ready(function() { 
    var $tabs= $("#tabs").tabs({ 
     fx : { 
      opacity: 'toggle' 
     }, 
     select : function(event, ui) { 
      $(".entry-content").hide();     
     }     //I assume it goes near here, but no luck 
    }); 
}); 

請問報價函數需要先調用變量?

而且,如何使報價div在改變引號時也使用fx不透明效果?

編輯11年4月27日

這工作,並使用該函數的FX效果:

$(document).ready(function() { 
    var $tabs = $("#tabs").tabs({ 

     fx: { 
      opacity: 'toggle' 
     }, 

     select: function (event, ui) { 
      $(".entry-content").hide(); 

      $('div#quotescontainer').load('quotes.html', function() { 
       var $quotes = $(this).find('div.quote'); 
       var n = $quotes.length; 
       var random = Math.floor(Math.random() * n); 
       $quotes.hide().eq(random).fadeIn(); 
      }); 
     } 
    }); 
}); 

回答

1

的代碼應該去花括號內

$(document).ready(function() { 
    var $tabs= $("#tabs").tabs({ 
     fx : { 
      opacity: 'toggle' 
     }, 
     select : function(event, ui) { 
      $(".entry-content").hide();     
      // <-- code goes here 
     }     //I assume it goes near here, but no luck <-- NO! 
    }); 
}); 

個人而言,我把它放在選項卡中的「顯示」事件,但是這不應該是一個問題。

我設置了一些測試代碼撥弄給你看應該如何:http://jsfiddle.net/PyN5Y/1/

$("#tabs").tabs({ 
    select: function(event, ui) { 
     alert('triggered on select'); 
     doStuff();  
    }, 
    show: function(event, ui) { 
     alert('triggered on show'); 
     doStuff(); 
    } 
}); 

function doStuff() { 
    alert('doing stuff'); 
} 
+0

啊,效果很好。在這裏學習東西。而jsfiddle是一個很棒的工具。現在唯一的問題是完全重新加載頁面或首次訪問頁面,引號div是空白的,我可以理解,因爲沒有選項卡被觸發。現在我想知道在'#quotescontainer'的第一頁加載中是否有一種方法可以包含一些靜態文本,即「歡迎...」而不是隨機引用? – markratledge 2011-04-27 16:16:46

+0

@songdogtech。 'show'實際上也是在頁面加載時觸發的。 '選擇'僅在有人點擊時觸發。您也可以將文本放入標籤中,以便默認顯示內容。 – JohnP 2011-04-27 16:57:42

1

這是我怎麼會監視選項卡上的變化,然後揭開序幕你的報價功能。

$("#tabs ul li a").click(function(e) { 
    update_quote(); 
}); 

function update_quote() { 
    $.get('quotes.txt', function(data) { 
     var quotes = data.split("\@"); 
     var idx = Math.floor(quotes.length * Math.random()); 
     $('.quotes').fadeOut(); 
     $('.quotes').html(quotes[idx]); 
     $('.quotes').fadeIn(); 
    }); 
} 

update_quote函數可以被清理並變得更簡單,我保留它非常詳細,所以你可以看到如何更新它。你也可以鏈接你的jQuery效果。

+0

除了使用上述JohnP的例子會更好的點擊功能的,只是包括update_quote()函數調用選項卡中的選項。 – jhanifen 2011-04-27 05:05:29

相關問題