我有一个opencart项目,其中我使用$('#some-id')
以及jQuery('#some-id')
这是完美的工作,但在将项目从1.5升级到2.1后,它只接受jQuery('#some-id')
并抛出错误$('#some-id')
为
TypeError:$(...)为空
以下是我的100个样本ajax函数之一。
$('#button-coupon').on('click', function() {
$.ajax({
url: 'index.php?route=total/coupon/coupon',
type: 'post',
/*Here $ is not working jQuery works. Not just here, but in each line where $ is used its throwing error, untill & unless I replace it with jQuery.*/
data: 'coupon=' + encodeURIComponent($('input[name=\'coupon\']').val()),
dataType: 'json',
success: function(json) {
$('.alert').remove();
}
});
});
有没有办法让它们都起作用。我不想浪费时间用 jQuery 替换 $ ?
以下是firebug控制台中的错误快照。
如果我将$('input[name=\'coupon\']')
更改为jQuery('input[name=\'coupon\']')
,则会将其移至使用 $ 的其他行。例如见下图。
我曾尝试使用最新版本和旧版本的jQuery,但我的问题仍然存在。
答案 0 :(得分:2)
由于您没有包含有关您的代码的任何信息,这只是一般性提示,但可能值得为您深入探讨:
在尝试防止不同JS框架和库(所有使用$
快捷方式)之间发生冲突时,通常会采用以下方式封装您自己的库或模块:
jQuery.noConflict();
(function($) {
// your library or modules here
})(jQuery);
这样,当定义为“自我调用”时,标识符jQuery
必须仅在您自己的代码之外指定一次。在该块中,jQuery库现在再次以快捷方式$
知道,但它不与该之外的 的其他用法冲突。
这是有关该主题的提示汇编:https://api.jquery.com/jquery.noconflict/