Skip to content Skip to sidebar Skip to footer

Typeerror: 'undefined' Is Not A Function With Tablesorter Only In Safari

Only in safari I get the error: TypeError: undefined is not a function (evaluating '$('table').tablesorter') In all other browsers it works. This is my javascript code, and I have

Solution 1:

When jQuery is loaded twice, any scripts that are loaded between the two copies get associated with the first copy of jQuery (ref):

<scriptsrc="jquery-copy1.js"></script><scriptsrc="myPluginExtendedFromJQ1.js"></script><scriptsrc="jquery-copy2.js"></script><scriptsrc="myPluginExtendedFromJQ2.js"></script><script>// all of the jQuery's below are associated with jquery-copy2jQuery(function(){
  // no problemsjQuery('#demo-x').myPluginExtendedFromJQ2();

  // error: myPluginAttachedTOJQ1 is undefinedjQuery('#demo-y').myPluginExtendedFromJQ1();
});
</script>

So once the document ready function is called, the jQuery calls inside refer to the second copy of jQuery that was loaded.

If this situation is unavoidable, then you'll need to define a variable associated with the first copy:

<scriptsrc="jquery-copy1.js"></script><script>var $jq1 = jQuery.noConflict();</script><scriptsrc="myPluginExtendedFromJQ1.js"></script><scriptsrc="jquery-copy2.js"></script><scriptsrc="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 problemsjQuery('#demo-x').myPluginExtendedFromJQ2();

  // target first copy of jQuery
  $jq1('#demo-y').myPluginAttachedToJQ1();
});
</script>

Please refer to this jQuery forum post for more details.

In addition, I would report this issue to your web host, as they should be checking to see if jQuery already exists before loading it.

Solution 2:

in my case the solution was to:

1. scripting order

jquery-1.11.1.js

jquery-latest.js

jquery.tablesorter.js

2. Method .ready(function($){}) - it is important to provide $

jQuery(document).ready(function($){
            $("#tableSort").tablesorter(); 
    });

Solution 3:

This problem is because you're defining more than one jquery script. I had only this:

<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>

And got the same error again and again.

Then I realized that the error was that! But I was using a Layout which defined another version of jquery. After changing the definition in my Layout the error was gone.

Solution 4:

I was also facing the same issue. In my case, sequence was the problem. The sequence adding jquery and tablesorter js is important. Load jquery first and then tablesorter.

<scriptsrc="/js/jquery-1.11.0.min.js"></script><scriptsrc="/js/jquery.tablesorter.min.js"></script>

earlier It was written as

<scriptsrc="/js/jquery.tablesorter.min.js"></script><scriptsrc="/js/jquery-1.11.0.min.js"></script>

Hope it helps.

Post a Comment for "Typeerror: 'undefined' Is Not A Function With Tablesorter Only In Safari"