我有一个 opencart 项目,其中使用了 $('#some-id') 以及正在运行的 jQuery('#some-id')完美,但是将项目从 1.5 升级到 2.1 后,它只接受 jQuery('#some-id') 并抛出 $('#some-id') 错误如
TypeError: $(...) is null
以下是我的一百个 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,但问题仍然存在。
请您参考如下方法:
由于您没有包含有关代码的任何信息,这只是一般提示,但可能值得您深入研究:
在尝试防止不同 JS 框架和库(全部使用 $ 快捷方式)之间的冲突时,通常所做的就是以这种方式封装您自己的库或模块:
jQuery.noConflict();
(function($) {
// your library or modules here
})(jQuery);
这样,当定义立即“ self 调用”时,标识符 jQuery 只需在您自己的代码之外指定一次。在该 block 内,jQuery 库现在再次在快捷方式 $ 下被识别,但它不会与该代码外部该快捷方式的其他用法发生冲突不再阻止。
这是有关该主题的提示汇编:https://api.jquery.com/jquery.noconflict/
