为什么当我删除$(document).ready时,自动完成功能被识别?

时间:2015-06-30 12:18:39

标签: jquery jquery-ui autocomplete

我在jQuery UI中有一个带autocomplete函数的页面,但是我收到以下错误:

  

JavaScript运行时错误:对象不支持属性或方法   '自动完成'

我拉着我的头发,因为一切似乎都没问题,但我仍然得到这个错误,这是代码:

<link href="~/Content/jquery-ui/jquery-ui.css" rel="stylesheet" />
<link href="~/Content/jquery-ui/jquery-ui.theme.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery-ui.min.js"></script>

<input type="text" id="tags">

<script type="text/javascript">
    $(document).ready(function () {
        $("#tags").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/Home/AutoCompleteSearch",
                    type: "POST",
                    dataType: "json",
                    data: { term: request.term },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return { label: item.ProductName, value: item.ProductName};
                        }));

                    }
                });
            },
            messages: {
                noResults: "", results: ""
            }
        });
    })
</script>

在删除$(document).ready部分之前没有任何效果,我想知道这与任何事情有什么关系?为什么当我删除$(document).ready突然自动完成功能时被识别?

1 个答案:

答案 0 :(得分:0)

首先,您没有使用$(document).ready(function(){})(分号)关闭;

现在即将到来,$(document).ready();用于触发事件,例如:.click(), .blur(), .change()等。$(document).ready()表示您不能在页面(文档)完全触发之前触发事件准备。

但是你宣布autocomplete()的方式,这里没有触发任何事件。这就是没有$(document).ready()的原因。