Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问jquery插件的实例_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript 访问jquery插件的实例

Javascript 访问jquery插件的实例,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,为了进一步了解jQuery插件的工作原理,我想停止从javascript控制台(使用Firefox中的Firebug)自动滚动jQuery旋转木马插件 在插件的演示中,停止自动滚动非常容易。我只是在控制台中使用以下代码 $('#mycarousel').jcarousel('stopAuto') 但是,在使用上述插件的旧版本(以及jQuery的旧版本)的系统上,等效代码为: $('#showcaseHolder').jcarousel('stopAuto') 不起作用 我注意到的一个区别是,

为了进一步了解jQuery插件的工作原理,我想停止从javascript控制台(使用Firefox中的Firebug)自动滚动jQuery旋转木马插件

在插件的演示中,停止自动滚动非常容易。我只是在控制台中使用以下代码

$('#mycarousel').jcarousel('stopAuto')
但是,在使用上述插件的旧版本(以及jQuery的旧版本)的系统上,等效代码为:

$('#showcaseHolder').jcarousel('stopAuto')
不起作用

我注意到的一个区别是,在第一种(工作)情况下,对jcarosel的调用返回“undefined”,在第二种(不工作)情况下,它返回元素本身

这两种情况有什么区别?我如何在第二个站点上调用“stopAuto”?为什么在第二种情况下返回元素


谢谢你的帮助

你说你这样做是为了学习插件是如何工作的。。如果在新版本中调用
$('#mycaousel').jcarousel('stopAuto')
,它将返回undefined,因为它不打算被链接。在旧版本中,它返回元素本身,因为插件开发人员希望此元素是可链接的,这意味着您可以执行类似于,
$('mycaousel').jcarousel('stopAuto').jcarousel('startAuto')

在oldskool版本中:

jCarousel函数接受一个“options”对象,它允许您在对象中指定可选参数,如:
{scroll:1}

在不阅读此旧版本的任何文档和查看代码的情况下,我假设您可以向“auto”可选参数提供“0”,这将关闭autoscroll。现在自动设置为15,这意味着它将在1.5秒后自动滚动

试试这个:

jQuery(document).ready(function() {
    jQuery('#showcaseHolder').jcarousel({
        scroll:1,
        itemLoadCallback: function (carousel, state) {
            JQUERY_CARA_LEFT = carousel;            
        },
        auto: 0, /* was auto: 15 */
        wrap:'both' 
    });
    jQuery('#showcaseHolderRight').jcarousel({
        scroll:1,
        itemLoadCallback: function (carousel, state) {
            JQUERY_CARA_RIGHT = carousel;           
        },
        auto: 0, /* was auto: 15 */
        wrap:'both' 
    }); 
});
注意:您还可以删除
auto:0
,因为如果您不提供可选的“auto”参数,它将默认为“0”

更新(基于评论):

我可以告诉你答案,但我想解释一下我是如何做到这一点的:

在jcarousel.js源代码中,这是关键部分:

// Create shortcut for internal use
var $jc = $.jcarousel;
 ...

$jc.fn.extend({
 ...
startAuto: function(s) { ... },  /* s = number of seconds to autoscroll by */
stopAuto: function() { ... }
 ...
这意味着“startAuto(s)”和“stopAuto()”是jcarousel对象的参数

因为在代码中,当实例化jcarousel对象时,您将一个对象放在var JQUERY_CARA_左侧,另一个放在JQUERY_CARA_右侧,这是您需要使用的格式:

要随时启动,请执行以下操作:

JQUERY_CARA_LEFT.jcarousel.startAuto(15);
// or
JQUERY_CARA_RIGHT.jcarousel.startAuto(15);
JQUERY_CARA_LEFT.jcarousel.stopAuto();
// or
JQUERY_CARA_RIGHT.jcarousel.stopAuto();
并随时停止:

JQUERY_CARA_LEFT.jcarousel.startAuto(15);
// or
JQUERY_CARA_RIGHT.jcarousel.startAuto(15);
JQUERY_CARA_LEFT.jcarousel.stopAuto();
// or
JQUERY_CARA_RIGHT.jcarousel.stopAuto();

这些案例的不同之处在于版本。。。新版本与旧版本不同。阅读文档,它们都在那里。@Andrew插件或jquerry旧版本的文档?我无法找到旧版本插件的文档,你有链接吗?你可以在源代码中找到文档。只需右键单击页面并单击sourcecode。仔细筛选文本,直到你看到这一条:
如果你使用firefox,上面应该有一个直接链接,所以只需简单的点击就可以了。开发者有一些文档在里面。@ShadowScripter-谢谢!我会查出来的。谢谢你提供的关于链接的信息,这非常有帮助!加载实例后,是否有任何方法可以更改“自动”选项?我希望能够在自动滚动启动后停止自动滚动,然后最终重新启动它(尽管如果我能想出如何停止它,我可能能够重新启动它。)谢谢你的回答!谢谢你的回答,我终于明白了。我刚刚调用了JQUERY\u CARA\u LEFT.stopAuto()。如果有机会的话,我仍然想知道为什么我不能使用jquery选择器调用这个函数?再次感谢!!!无法通过jquery选择器调用函数的原因是实例化了一个新的jcarousel。在文档中,它的内容是
$.extend.fn.jcarousel…
,因此每次执行
$(“#”).jacarousel()
时,您不再引用文档中的内容,而是引用您刚刚创建的内容。唯一可以引用它的方法是通过已定义的变量或全局变量。就像你刚才做的那样。@ShadowScripter,谢谢!!所以如果不是这行“JQUERY\u CARA\u LEFT=carousel;”在回调函数中,您将无法访问jcarousel实例来更改加载后的自动滚动?没错。您必须在文档中具有当前对象的实际引用。回调函数返回现有的carousel对象,因此是可访问的。