JS技术

JS异步编程系列三:Jscex无创痕切入jQueryUI

字号+ 作者:admin 来源: 2014-11-16 22:20 我要评论( )

很多人可能会有个疑问,Jscex和其他类库共同使用或者语法混用时,会不会出现冲突或者异常?那么我们就来做个尝试吧! 我们使用tab插件: XML/HTML Code 复制内容到剪贴板 script $(functio

 很多人可能会有个疑问,Jscex和其他类库共同使用或者语法混用时,会不会出现冲突或者异常?那么我们就来做个尝试吧!

我们使用tab插件:

XML/HTML Code复制内容到剪贴板
  1.  <script>  
  2. $(function () {  
  3. $("#tabs").tabs({ event: "mouseover" });  
  4. });  
  5. </script>  

后来,官网帮这个tab插件扩展了一个自动切换的功能,只需要这样写就行:

 <script type="text/javascript">
$(function () {
var t = $("#tabs").tabs();
t.tabs("rotate", 3000, false);
});
</script>

扩展的代码如下:

 

依然是那么费解的代码!在官方没有扩展之前,我们可以用Jscex介样子实现:

 <script type="text/javascript">
var swicthAsync = eval(Jscex.compile("async", function () {
var tabCount = $("#tabs ul li").length;
while (true) {
for (var i = 0; i < tabCount; i++) {
$await(Jscex.Async.sleep(2000));
$('#tabs').tabs({ selected: i });
}
}
}));
$(function () {
$("#tabs").tabs();
swicthAsync().start();
});
</script>

 

JavaScript Code复制内容到剪贴板
  1. $.extend($.ui.tabs.prototype, {  
  2. rotation: null,  
  3. rotate: function (ms, continuing) {  
  4. var self = this,  
  5. o = this.options;  
  6. var rotate = self._rotate || (self._rotate = function (e) {  
  7. clearTimeout(self.rotation);  
  8. self.rotation = setTimeout(function () {  
  9. var t = o.selected;  
  10. self.select(++t < self.anchors.length ? t : 0);  
  11. }, ms);  
  12. if (e) {  
  13. e.stopPropagation();  
  14. }  
  15. });  
  16. var stop = self._unrotate || (self._unrotate = !continuing  
  17. function (e) {  
  18. if (e.clientX) { // in case of a true click  
  19. self.rotate(null);  
  20. }  
  21. }  
  22. function (e) {  
  23. t = o.selected;  
  24. rotate();  
  25. });  
  26. // start rotation  
  27. if (ms) {  
  28. this.element.bind("tabsshow", rotate);  
  29. this.anchors.bind(o.event + ".tabs", stop);  
  30. rotate();  
  31. // stop rotation  
  32. else {  
  33. clearTimeout(self.rotation);  
  34. this.element.unbind("tabsshow", rotate);  
  35. this.anchors.unbind(o.event + ".tabs", stop);  
  36. delete this._rotate;  
  37. delete this._unrotate;  
  38. }  
  39. return this;  
  40. }  
  41. });  
  42. })(jQuery);  

可以看得出来,这样的话Jscex没有对JqueryUI做任何介入,Jscex只是外部控制的一层壳。这样无法对测试出Jscex是否能与冲突或者异常,那么,我们就来用Jscex重写官方的扩展方法吧!

JavaScript Code复制内容到剪贴板
  1. $.extend($.ui.tabs.prototype, {  
  2. rotation: null,  
  3. rotate: function (ms, continuing) {  
  4. var self = this,  
  5. o = this.options;  
  6. var swicthAsync = eval(Jscex.compile("async"function () {  
  7. while (true) {  
  8. for (var i = 0; i < self.anchors.length; i++) {  
  9. $await(Jscex.Async.sleep(ms));  
  10. self.select(i);  
  11. }  
  12. }  
  13. }));  
  14. swicthAsync().start();  
  15. return this;  
  16. }  
  17. });  
  18. })(jQuery);  

 运行效果如下,一切正常!但是continuing参数暂时没有起作用,该参数是决定用户在选中后是否继续循环下去,这个就留个大家自己去完善吧~~~~

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 在IE下JS编程应注意的内存释放问题_Javascript教程

    在IE下JS编程应注意的内存释放问题_Javascript教程

    2015-10-02 18:19

  • JS异步编程系列五:Jscex制作愤怒的小鸟

    JS异步编程系列五:Jscex制作愤怒的小鸟

    2014-11-16 22:20

  • JS异步编程系列四:Jscex+Jquery UI打造游戏力度条

    JS异步编程系列四:Jscex+Jquery UI打造游戏力度条

    2014-11-16 22:20

  • JS异步编程系列二:Jscex模拟重力场与google苹果

    JS异步编程系列二:Jscex模拟重力场与google苹果

    2014-11-16 22:20

网友点评
c