【问题标题】:$(document).ready(...) doesn't get called$(document).ready(...) 没有被调用
【发布时间】:2012-01-12 13:09:37
【问题描述】:

我有以下 ejs 模板

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Emasc Editor</title>
        <style>
            .list{
                display: inline-block;
            }
        </style>
        <script type="text/javascript" src="/js/jquery-1.7.1.min.js"></script>
        <script type="text/javscript">
$(document).ready(function(){
    alert('test');
    $("#setMembershipsButton").click(function(e){
        // send selected person and groups to server and create memberships
        data = {
            person: $('#person_list').val(),
            groups: $('#group_list').val()
        };
        $.post('/newConnections', data);
    });
    $("#person_list").change(function(){
        alert('test');
        // send selected person to server and retrieve memberships
        $.post('/getPersonGroups', { personID: $('#person_list').val() }, function(data, textStatus){
            $('#group_list option').removeAttr('selected');
            for(var i=0; i<data.ids.length; i++){
                $('#group_list option[value=' + data.ids[i] + ']').attr('selected', 'selected');
            }
        });
    });
});
        </script>
    </head>
    <body>
        <div class="list">
            <select id="person_list" size="<%= persons.length+1 %>">
                <% for( var i=0; i<persons.length; i++){ %>
                    <option value="<%= persons[i].id %>"><%= persons[i].name %></option>
                <% } %>
            </select>
            <form method="post" action="/newPerson">
                <input type="text" name="user[name]" />
                <input type="submit" value="Submit" />
            </form>
        </div>

        <div class="list">
            <select id="group_list" multiple size="<%= groups.length+1 %>">
                <% for( var i=0; i<groups.length; i++){ %>
                    <option value="<%= groups[i].id %>"><%= groups[i].name %></option>
                <% } %>
            </select>
            <form method="post" action="/newGroup">
                <input type="text" name="group[name]" />
                <input type="submit" value="Submit" />
            </form>
        </div>

        <br/>

        <input id="setMembershipsButton" type="button" value="Set Memberships"></input>
    </body>
</html>

第一个 alert('test') 永远不会被调用。 我在这里错过了什么?

【问题讨论】:

  • 您是否在 JS 控制台中遇到任何 JS 错误?
  • 验证/js/jquery-1.7.1.min.js的位置
  • 我可以在 chrome 控制台中使用 $,这让我认为 jquery 已包含在内。 Chrome 资源也说它在那里。

标签: javascript node.js ejs express


【解决方案1】:

您的脚本类型无效:

<script type="text/javscript">

应该是

<script type="text/javascript">

来自Mozilla

类型
此属性标识嵌入在脚本元素中或通过元素的 src 属性引用的代码的脚本语言。这被指定为 MIME 类型;支持的 MIME 类型的示例包括 text/javascript、text/ecmascript、application/javascript 和 application/ecmascript。如果此属性不存在,则将脚本视为 JavaScript。

但是,如果浏览器无法识别该类型,则会忽略该块。最好完全省略 type 属性以避免输入错误。

【讨论】:

  • 或者更好的是,完全删除它。
猜你喜欢
  • 1970-01-01
  • 2011-01-24
  • 2011-04-27
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多