1

您好尝试安装选择的 Jquery 插件,这使我能够<select>在所有浏览器中自定义我的标签。单击此处无论如何,我已将此插件集成到我的站点中,并且在我的元素检查器中遇到以下错误消息..单击此处

“TypeError: Object # has no method ‘observe’”

从以下代码

 <script type="text/javascript">
 document.observe('dom:loaded', function(evt) {
var select, selects, _i, _len, _results;
if (Prototype.Browser.IE && (Prototype.BrowserFeatures['Version'] === 6 || Prototype.BrowserFeatures['Version'] === 7)) {
  return;
}
selects = $$(".chzn-select");
_results = [];
for (_i = 0, _len = selects.length; _i < _len; _i++) {
  select = selects[_i];
  _results.push(new Chosen(select));
}
deselects = $$(".chzn-select-deselect");
for (_i = 0, _len = deselects.length; _i < _len; _i++) {
  select = deselects[_i];
  _results.push(new Chosen(select,{allow_single_deselect:true}));
}
return _results;
 });
 </script>

有谁知道我该如何解决这个问题?

4

2 回答 2

2

该错误仅意味着一件事:您Prototype的html文档中没有,或者在您的脚本(来自您的代码示例)执行后加载。在某处发布完整html的代码(例如到 JSFIDDLE)以获得更准确的答案。

你有那个代码:

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.0.min.js"><\/script>')</script>
</head>

在它放置另一个script包含 Prototype 的标签之前:

<script src="/path/to/Prototype.js"></script>

并将Prototype.js文件/path/to/放在服务器上的文件夹中。

然后,由于您Jquery在项目调用中使用jQuery.noConflict()jQuery包含后),因此' 的$符号Jquery不会与Prototype' 的符号冲突。

     <script>
         var $jq = jQuery.noConflict()
     </script>
</head>

$并用页面上的 所有 js替换所有 jQuery $jq(它与 Jquery 相关,而不是 Prototype)

于 2012-09-16T10:08:14.983 回答
0

什么是document.observe?改用 window.onload= function{}

<script type="text/javascript">
 window.onload= function(evt) {
var select, selects, _i, _len, _results;
if (Prototype.Browser.IE && (Prototype.BrowserFeatures['Version'] === 6 || Prototype.BrowserFeatures['Version'] === 7)) {
  return;
}
selects = $$(".chzn-select");
_results = [];
for (_i = 0, _len = selects.length; _i < _len; _i++) {
  select = selects[_i];
  _results.push(new Chosen(select));
}
deselects = $$(".chzn-select-deselect");
for (_i = 0, _len = deselects.length; _i < _len; _i++) {
  select = deselects[_i];
  _results.push(new Chosen(select,{allow_single_deselect:true}));
}
return _results;
 };
 </script>
于 2012-10-03T17:18:13.670 回答