vadikom / smartmenus

Advanced jQuery website menu plugin. Mobile first, responsive and accessible list-based website menus that work on all devices.
http://www.smartmenus.org
MIT License
594 stars 164 forks source link

Cannot create property 'guid' on string '.dropdown-menu.show' #134

Closed elemis closed 3 years ago

elemis commented 3 years ago

After upgrading to Bootstrap 5 Beta started getting the following error:

jquery.min.js:2 Uncaught TypeError: Cannot create property 'guid' on string '.dropdown-menu.show' at Object.add (jquery.min.js:2) at HTMLDocument. (jquery.min.js:2) at Function.each (jquery.min.js:2) at S.fn.init.each (jquery.min.js:2) at ke (jquery.min.js:2) at S.fn.init.on (jquery.min.js:2) at HTMLDocument.init (plugins.js:21) at e (jquery.min.js:2) at t (jquery.min.js:2)

vadikom commented 3 years ago

Please check the following issue and let me know if you still have any troubles: https://github.com/vadikom/smartmenus/issues/107

elemis commented 3 years ago

Yes, jQuery is already included after "bootstrap.min.js" and still before "jquery.smartmenus.js" and "jquery.smartmenus.bootstrap-4.js". This fix worked perfectly on alpha versions of BS5 but once we upgraded to v5.0.0-beta1 started getting the mentioned error.

vadikom commented 3 years ago

OK, thanks for the feedback! I will try to check this tomorrow...

vadikom commented 3 years ago

Hi again and sorry for the short delay! Unfortunately, I wasn't able to check this earlier.

Yes, I can confirm this is caused by a conflict with the code of "jquery.smartmenus.bootstrap-4.js". A fix will be shipped with the next release and in the meantime, you could avoid the error:

A) Either by using the latest pre-release version of the Bootstrap 4 addon from here: https://raw.githubusercontent.com/vadikom/smartmenus/master/src/addons/bootstrap-4/jquery.smartmenus.bootstrap-4.js

B) Or alternatively, you could add the following JS code on your page right before the link to "jquery.smartmenus.bootstrap-4.js":

(function($) {
  $(function() {
    if ($.fn.dropdown && $.fn.dropdown.Constructor && !$.fn.dropdown.Constructor._dataApiKeydownHandler) {
      $.fn.dropdown.Constructor._dataApiKeydownHandler = function() {};
    }
  });
})(jQuery);
elemis commented 3 years ago

Thank you for your help, works great!

vadikom commented 3 years ago

Np at all, thanks for your feedback too!

Cheers!