可以'不能间接执行JQuery函数
Can't execute JQuery function indirectly
我想标题非常不准确,所以请为我这个问题建议一个合适的标题。
我的网页上有一个图像滑块,它是一个名为LightSlider的插件,这就是初始化滑块的方法
var lightSlider = $("#lightSlider").lightSlider({ // Code Block 1
item: 1,
mode: 'fade',
keyPress: true,
pager: false,
controls: false
});
LightSlider也提供了公共方法,其中之一就是我正在尝试使用的方法。我正在尝试创建一个自定义按钮以转到上一张和下一张幻灯片。这是该的适当代码
$('.arrow-left[data-slider="lightSlider"]').on('click', function(){
lightSlider.goToPrevSlide(); // Code Block 2
});
以及相应的html
<div class="arrow-left" data-slider="lightSlider">
<i class="fa fa-chevron-left"></i> // Code Block 3
</div>
它运行得很好,但我在页面上有多个滑块,并为所有滑块分配一个唯一的id,并为每个按钮一遍又一遍地编写javascript代码(块2),这对我来说似乎不是很有效,所以我想使用data-
属性来"自动化"这个过程。为此,我尝试了
$('.arrow-left').on('click', function(){
var target = $(this).attr('data-slider');
console.log(target);
target.goToPrevSlide();
});
但它没有起作用。我收到的错误是target.goToPrevSlide() is not a function
。当然不是,但我假设target
会被它的值lightSlider
取代,不是吗?
console.log
的输出是lightSlider
。我的问题是,为什么它不起作用,解决办法是什么?
您想要做的是:
var lightSlider = $("#lightSlider").lightSlider({ // Code Block 1
item: 1,
mode: 'fade',
keyPress: true,
pager: false,
controls: false
});
# Assign the `data-slide` attribute of element `#lightSlider` to the instance of `lightSlider`.
$("#lightSlider").data('slide', lightSlider);
然后,您将能够通过jquery直接从节点访问lightSlide。
您可能需要查看jquery数据文档。
有几种方法可以实现这一点。一种方法是在每个滑块自己的上下文中初始化:
$('.slider-wrapper').each(function() {
var lightSlider = $('.slider', this).lightSlider({
item: 1,
mode: 'fade',
keyPress: true,
pager: false,
controls: false
});
$('.arrow-left', this).on('click', function(){
lightSlider.goToPrevSlide();
});
});
HTML:
<div class="slider-wrapper">
<div class="slider">
...
</div>
<div class="arrow-left">
<i class="fa fa-chevron-left"></i> // Code Block 3
</div>
</div>
这样,即使在同一页上有多个"滑块"元素,函数块中的lightSlider
变量也始终与正在初始化的特定元素相对应。
相关文章:
- 如何在category.php中执行jquery,这应该适用于类别wordpress中的每个帖子
- 在Grails中的gsp中执行jquery代码
- 使用数组表示法对多个字段执行jQuery日期选择器
- 可以'不能间接执行JQuery函数
- 必须等待执行 jQuery,直到加载服务
- 如何按顺序执行 jQuery 函数
- 如何在 ul 标签下执行 JQuery UI 自动完成
- 如何在Safari提交表单之前执行JQuery
- 对未知数量的元素执行Jquery循环
- 页面内容加载完毕后执行Jquery功能
- 在动态列表中单击的特定img上执行JQuery
- 如何在运行时添加的对象上执行Jquery插件
- Android-Javascript:如何在webview中执行jquery
- 在setTimeout中执行jQuery成员函数而不关闭的方法
- Jquery:在Jquery的(字符串)变量中执行Jquery脚本
- 执行Jquery函数()的两个条件
- 表单提交成功后调用/执行JQuery函数
- 当记录达到10以上时,Bootstrap中的DataTable不执行jQuery
- 通过javascript加载jQuery后执行jQuery代码
- 如何正确执行Jquery动画浮动