我正在尝试使用PinchZoomer,这是Wordpress网站上的一个Jquery插件,但在萤火虫中两次出现此错误:TypeError:$不是函数
我知道我应该在Wordpress中使用“ jQuery”而不是$符号,但是在这种情况下没有什么区别。这是我的代码:
<script type="text/javascript">
jQuery( document ).ready(function($) {
$(".pinchzoom").pinchzoomer();
});
</script>
这是我的使jQuery和Wordpress中的PinchZoomer插件入队的代码:
function add_jQuery_scripts() {
wp_enqueue_script('jquery');
wp_enqueue_script('hammer', get_template_directory_uri() . '/pinchzoomer/jquery.hammer.min.js', array() );
wp_enqueue_script('mousewheel', get_template_directory_uri() . '/pinchzoomer/jquery.mousewheel.min.js', array() );
wp_enqueue_script('pinchzoomer', get_template_directory_uri() . '/pinchzoomer/jquery.pinchzoomer.min.js', array() );
wp_enqueue_script('modernizr', get_template_directory_uri() . '/pinchzoomer/modernizr.min.js', array() );
wp_enqueue_script('tweenmax', get_template_directory_uri() . '/pinchzoomer/TweenMax.min.js', array() );
}
add_action('wp_enqueue_scripts', 'add_jQuery_scripts');
[This is the page在哪儿起作用?
我想念什么?
根据wp_enqueue_script的Wordpress docs,在第三个参数中是该文件的依赖性。
此参数是可选的,并且接受一种数组类型。为了使jQuery可以用于该文件,您需要做的就是将其添加为依赖项。
例如:
wp_enqueue_script( 'tweenmax', get_template_directory_uri() . '/pinchzoomer/TweenMax.min.js', array('jquery'));
您可以阅读有关here的更多信息,其中文档解释了有关“链接依赖jQuery的主题脚本”。
我认为您不需要在代码中包含此部分,因为我认为jQuery附带了Wordpress,您可以在“使相关脚本“入队”时将其定义为依赖项:
wp_enqueue_script('jquery');
最后,关于将jQuery置于无冲突状态并且在函数中使用美元符号的注释。
通过在函数旁边的方括号中包含美元符号,这基本上只是将$
符号引入本地范围,作为访问jQuery的一种方式,而不必每次在“无冲突”模式下都重新键入jQuery。 。
即这只是一种更短的访问方式。您可以在Wordpress中阅读有关无冲突包装的信息,也可以在文档中阅读有关将$
简称为here的信息。
因此以下列方式使用库应该没问题。
jQuery(document).ready(function($) {
$(".pinchzoom").pinchzoomer();
});
[通过查看插件源代码以及我们在评论中讨论的内容,第1440行的PinchZoomer插件本身可能会出现问题,因为它们本身并未将$
用于其本地范围。
您可以通过在线设置断点1440,刷新页面并将$
的值设置为jQuery
来进行测试。如果您可以自行访问源代码,则可以进行修复,尽管实际上他们应该自己进行修复。
第1433-1442行上的破损代码应固定为类似于以下代码:
(function($)
{
function onReady()
{
PinchZoomer.init();
}
$(onReady);
}(jQuery));
当我在控制台中评估$
时,进入您引用的页面时,我不确定,但是jQuery
已定义。我认为您的问题可能是回调变量,如果定义了jQuery
,则除非库冲突,否则您不必担心会定义$
。
这应该起作用:
jQuery( document ).ready(function() {
$(".pinchzoom").pinchzoomer();
});
这里是您正在做的简写:
jQuery(function() {
$(".pinchzoom").pinchzoomer();
});
// Or
$(function() {
$(".pinchzoom").pinchzoomer();
});
另一种选择是将您的jquery包装在一个匿名函数中:
(function($) {
// All of your jquery calls inside of here
$(function() {
$(".pinchzoom").pinchzoomer();
});
})(jQuery);
您可以在就绪功能之前添加此代码。
$=jQuery;
也请在第二行中使用$或jQuery,在使用$时请使用jQuery并检查。
帮助我。我找不到此问题的解决方案
TypeError:h.ajax不是函数
这是我的头部
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.20/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.js"></script>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<!-- DataTables -->
<script src="//cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script>
<!-- Bootstrap JavaScript -->
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<!-- App scripts -->
此表
<table class="table table-bordered" id="users-table">
<thead>
<tr>
<th>id</th>
<th>medee</th>
<th>unelgee</th>
</tr>
</thead>
</table>
和这是我的数据表功能
$(document).ready(function() {
$('#users-table').DataTable({
processing: true,
serverSide: true,
ajax: {
url: "{{route('showdata')}}",
type: "GET",
},
columns: [{
data: 'id',
name: 'id'
},
{
data: 'medee',
name: 'medee'
},
{
data: 'unelgee',
name: 'unelgee'
}
]
});
});
这是我的存储库功能
public function all()
{
$users = DataModel::select(['id', 'medee', 'unelgee']);
return Datatables::of($users)->make(true);
}
我有这个问题