2011-04-26 100 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

相关问题