【问题标题】:typeface.js - is not "rewriting"typeface.js - 不是“重写”
【发布时间】:2011-10-09 03:48:30
【问题描述】:

当您按下一个新的href 时,typeface.js 怎么不会“重写”?

如果你从类中删除typeface-js,它会起作用。

直播链接:http://temp.electrobeat.dk/typeface.php

更新功能:

            function generate_menu(page){
                var menu = {
                    posting : {
                        title : 'Posting'
                    },
                    account : {
                        title : 'Account'
                    }
                };
                
                var elm = $('#div_menu').empty();
                for(var key in menu){
                    (function(key){
                        $('<a class="typeface-js menu '+(key == page ? 'menu_active':'')+'" href="#'+key+'">'+menu[key].title+'</a>').appendTo(elm)
                            .click(function(){
                                generate_menu(key);
                            });
                    })(key);
                }
                _typeface_js.initialize();
            };

代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
 "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
        
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js" type="text/javascript"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js" type="text/javascript"></script>
        
        <script src="typeface-0.15.js" type="text/javascript"></script>
        <script src="arial_bold.typeface.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                function generate_menu(page){
                    var menu = {
                        posting : {
                            title : 'Posting'
                        },
                        account : {
                            title : 'Account'
                        }
                    };
                    
                    var elm = $('#div_menu').empty();
                    for(var key in menu){
                        (function(key){
                            $('<a class="typeface-js menu '+(key == page ? 'menu_active':'')+'" href="#'+key+'">'+menu[key].title+'</a>').appendTo(elm)
                                .click(function(){
                                    generate_menu(key);
                                });
                        })(key);
                    }
                };
                
                generate_menu('posting');
            });
        </script>
        
        <style type="text/css">
            #div_menu {
                background:#ff0000;
                padding:5px;
            }
            
            .menu {
                font-family:arial;
                font-size:14px;
                color:#e8f5ff;
                font-weight:bold;
                border-bottom:3px solid transparent;
                text-decoration:none;
                padding:1px 2px 2px 2px;
                margin:0px 2px 0px 2px;
            }
            
            .menu_active {
                color:#07447c;
                border-bottom:3px solid #e8f5ff;
            }
        </style>
    </head>
    
    <body>
        <div id="div_menu"></div>
    </body>
</html>

【问题讨论】:

  • 你能说清楚一点吗?您期望发生什么,实际发生了什么?
  • 菜单栏必须重新生成,重点放在当前菜单 href

标签: jquery typeface typeface.js


【解决方案1】:

【讨论】:

    【解决方案2】:

    问题是您要删除元素然后再次添加它们,但 typeface.js 只在页面上运行一次。如果你这样做,你需要手动重新触发 typeface.js 的方法,可能是:

    _typeface_js.initialize(); 
    

    在附加元素后,将这个(或任何一种方法)放入您的 generate_menu 方法中。

    【讨论】:

    • 如何重新触发方法
    • 有可能更新。您必须查看 typeface.js 源代码才能找到执行此操作的最佳方法。
    • 已经用更新的 generate_menu() 更新了我的问题。它仍然不起作用:(
    • 好的。阅读源代码,这一行使其无法正常工作:// quit if this function has already been callee ¬ if (arguments.callee.done) return; - 基本上 typeface.js 已损坏,您应该使用 Typekit 或其他东西来做您想做的事情。
    • Typekit 是更好的脚本吗?但是 Typekit 是要花钱的
    【解决方案3】:

    点击链接时必须取消默认事件传播:

    .click(function(event){
        event.preventDefault();
        generate_menu(key);
        return false;
    });
    

    发生的情况是,无论您单击菜单链接时正在执行什么代码,浏览器都会转到它们的href,即“#”。

    【讨论】:

      猜你喜欢
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      相关资源
      最近更新 更多