javascript - 未捕获的 TypeError : $(. ..).ready(...) 不是一个函数,即使它在 JsFiddle 上工作

标签 javascript jquery html css drop-down-menu

有问题的 JSFiddle 似乎没有问题:http://jsfiddle.net/S3LF3/ (如果您输入像 google.com 这样的网址,它将选择“.com”的值或您在点后面放置的任何内容,并且它会出现在列表中)

但是 jQuery 函数似乎有问题?

在 Chrome 中我收到此错误:

Uncaught TypeError: $(...).ready(...) is not a function

这是我的代码:

<html>
<head>
    <title>Add Site</title>

    <script src="js/jquery-3.1.1.min.js"></script>
    <link rel="stylesheet" type="text/css" href="css/msdropdown/dd.css" />
    <script src="js/msdropdown/jquery.dd.min.js"></script>
    <link rel="stylesheet" type="text/css" href="css/msdropdown/flags.css" />
</head>
<body>
<h1>Add new site</h1>
<div class="contentbox">
<form method="post">
        <input type="hidden" name="addsite" value="true"/>
            <p>
            <label for="site_url">Site url:</label>
            <input type="text" name="site_url" id="urlText" placeholder="domain.xxx" value=""/>
        </p>
        <p>
        <label for="site_url">Search locale:</label>
        <select name="locale" id="locale">
            <option value="">
              Select locale
            </option>
             <optgroup label="Popular">
<option value=".dk" data-image="images/msdropdown/icons/blank.gif" data-imagecss="flag dk" data-title="Denmark">Denmark - Danish</option>
                                                                                <option value=".de" data-image="images/msdropdown/icons/blank.gif" data-imagecss="flag de" data-title="Germany">Germany - German</option>
  <option value=".au" data-image="images/msdropdown/icons/blank.gif" data-imagecss="flag au" data-title="Australia">Australia - English</option>

  </optgroup>
            </select>
          </p>

        <p>
            <label for="site_url"></label>
            <input type="submit" name="submit"  class="btn" value="Add">
        </p>


</form>
</div>


</body>
</html>

<script>
$(document).ready(function() {
$("#locale").msDropdown();
})


(function ($) {
    $('#urlText').on('change', function () {
        var value = this.value,
            parts = this.value.split('.'),
            str, $opt;
        for (var i = 0; i < parts.length; i++) {
            str = '.' + parts.slice(i).join('.');
            $opt = $('#locale option[value="' + str + '"]');
            if ($opt.length) {
                $opt.prop('selected', true);
                break;
            }
        }
    })
})(jQuery);
</script>

我想要做的是,当用户输入一个网址(例如“google.dk”)时,它应该从下拉列表中为他选择末尾带有“.dk”的值。

最佳答案

我玩了你的代码,发现它是 $(document).ready(); 末尾缺少的分号;

    $(document).ready(function() {
         $("#locale").msDropdown();
    });

只需在内置编辑器中尝试一下:

<html>
<head>
    <title>Add Site</title>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link rel="stylesheet" type="text/css" href="css/msdropdown/dd.css" />
    <script src="js/msdropdown/jquery.dd.min.js"></script>
    <link rel="stylesheet" type="text/css" href="css/msdropdown/flags.css" />
</head>
<body>
<h1>Add new site</h1>
<div class="contentbox">
<form method="post">
        <input type="hidden" name="addsite" value="true"/>
            <p>
            <label for="site_url">Site url:</label>
            <input type="text" name="site_url" id="urlText" placeholder="domain.xxx" value=""/>
        </p>
        <p>
        <label for="site_url">Search locale:</label>
        <select name="locale" id="locale">
            <option value="">
              Select locale
            </option>
             <optgroup label="Popular">
<option value=".dk" data-image="images/msdropdown/icons/blank.gif" data-imagecss="flag dk" data-title="Denmark">Denmark - Danish</option>
                                                                                <option value=".de" data-image="images/msdropdown/icons/blank.gif" data-imagecss="flag de" data-title="Germany">Germany - German</option>
  <option value=".au" data-image="images/msdropdown/icons/blank.gif" data-imagecss="flag au" data-title="Australia">Australia - English</option>

  </optgroup>
            </select>
          </p>

        <p>
            <label for="site_url"></label>
            <input type="submit" name="submit"  class="btn" value="Add">
        </p>


</form>
</div>


</body>
</html>

<script>
$(document).ready(function() {
//$("#locale").msDropdown();
});


(function ($) {
    $('#urlText').on('change', function () {
        var value = this.value,
            parts = this.value.split('.'),
            str, $opt;
        for (var i = 0; i < parts.length; i++) {
            str = '.' + parts.slice(i).join('.');
            $opt = $('#locale option[value="' + str + '"]');
            if ($opt.length) {
                $opt.prop('selected', true);
                break;
            }
        }
    })
})(jQuery);
</script>

关于javascript - 未捕获的 TypeError : $(. ..).ready(...) 不是一个函数,即使它在 JsFiddle 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42298505/

相关文章:

javascript - 如何从api中获取数据?

javascript - 从ajax调用获取字符串版本

javascript - 匹配字符串的一部分

javascript - 列表中的图像未正确显示(就像在表格中一样),如何做到这一点

css - 为什么我的背景图片在 html5 中不起作用?

html - 开箱即用的文本后的CSS

javascript - 设计一个带有多个文件附件选项的文本框

php - Jquery UI 自动完成项目链接

jquery - 如果选项卡未激活,jqgrid 无法在 jquery-ui 选项卡下正确加载

html - 多个列表并排放置并带有样式标题标题