只有在safari中我才会收到错误:
TypeError:undefined不是一个函数(评估' $(" table")。tablesorter')
在所有其他浏览器中它都有效。 这是我的javascript代码,我把头文件推到了jquery和tablesorter javascript的脚本中。 那么我该如何解决这个问题呢?为什么它只在Safari中而不在任何其他浏览器中?
<script>
$(function() {
// call the tablesorter plugin
$("table").tablesorter({
theme : 'jui',
headerTemplate : '{content}{icon}',
// hidden filter input/selects will resize the columns, so try to minimize the
etc
答案 0 :(得分:4)
当jQuery加载两次时,在两个副本之间加载的任何脚本都与第一个jQuery副本(ref)相关联:
<script src="jquery-copy1.js"></script>
<script src="myPluginExtendedFromJQ1.js"></script>
<script src="jquery-copy2.js"></script>
<script src="myPluginExtendedFromJQ2.js"></script>
<script>
// all of the jQuery's below are associated with jquery-copy2
jQuery(function(){
// no problems
jQuery('#demo-x').myPluginExtendedFromJQ2();
// error: myPluginAttachedTOJQ1 is undefined
jQuery('#demo-y').myPluginExtendedFromJQ1();
});
</script>
因此,一旦调用了文档就绪函数,内部的jQuery
调用将引用已加载的第二个jQuery副本。
如果这种情况不可避免,那么你需要定义一个与第一个副本相关的变量:
<script src="jquery-copy1.js"></script>
<script>var $jq1 = jQuery.noConflict();</script>
<script src="myPluginExtendedFromJQ1.js"></script>
<script src="jquery-copy2.js"></script>
<script src="myPluginExtendedFromJQ2.js"></script>
<!-- other stuff -->
<script>
// lets call plugins attached to the first copy of jQuery
// document ready can be called on either version $(function(){ ... })
jQuery(function(){
// no problems
jQuery('#demo-x').myPluginExtendedFromJQ2();
// target first copy of jQuery
$jq1('#demo-y').myPluginAttachedToJQ1();
});
</script>
有关详细信息,请参阅this jQuery forum post。
此外,我会将此问题报告给您的网络托管服务商,因为他们应该在加载之前检查jQuery是否已经存在。
答案 1 :(得分:4)
就我而言,解决方案是:
1。脚本订单
jquery-1.11.1.js
jquery-latest.js
jquery.tablesorter.js
2。方法.ready(function($){}) - 提供$
非常重要 jQuery(document).ready(function($){
$("#tableSort").tablesorter();
});
答案 2 :(得分:1)
此问题是因为您正在定义多个jquery脚本。 我只有这个:
<script src="@Url.Content("~/Scripts/jquery-1.11.3.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.tablesorter.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.tablesorter.pager.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.tablesorter.widgets.js")" type="text/javascript"></script>
一次又一次地出现同样的错误。
然后我意识到错误就是这样!但我正在使用一个定义另一个版本的jquery的Layout。 更改布局中的定义后,错误消失了。
答案 3 :(得分:0)
我也面临同样的问题。在我的情况下,顺序是问题。 添加jquery和tablesorter js的序列很重要。 首先加载jquery然后加载tablesorter。
<script src="/js/jquery-1.11.0.min.js"></script>
<script src="/js/jquery.tablesorter.min.js"></script>
之前它被写为
<script src="/js/jquery.tablesorter.min.js"></script>
<script src="/js/jquery-1.11.0.min.js"></script>
希望它有所帮助。