jQuery插件:使用回调更改插件行为

前端之家收集整理的这篇文章主要介绍了jQuery插件:使用回调更改插件行为 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用jQuery token input plugin,并且想要在添加令牌时更改其行为.

我在原始代码添加了“ onAddToken”回调,以便可以看到将令牌添加到输入框的时间,但是我不确定如何将tokenInput的URL从“ url / to / call”更改为新的URL,新/网址/拨打/致电”.

this,$this和$(this)似乎不起作用.有什么建议么?

$("#input").tokenInput("/url/to/call",{
        noResultsText: "No results yet. Type some more...",searchingText: "Searching...",onAddToken: function(args) {
            // alter tokenInput itself to use "new/url/to/call" instead of 
            // the original "url/to/call/"
    }
 });
最佳答案
问题在于,任何本机类型(数字,字符串等)的函数参数都将通过值(复制)传递给调用函数.您希望有一个通过引用传递的参数,而在javascript中执行此操作的唯一方法是传递一个对象.

调用站点(在插件中)调用函数,如下所示:

config.onAddToken({url: myUrlVar});

然后在您的回调中,您可以更改传入对象的url属性的值.

$("#input").tokenInput("/url/to/call",onAddToken: function(oUrl) {
            oUrl.url = "mynew/url";
        }
});

这在您要通过引用传递多个值的情况下很有用,但是在您的情况下,您可能只想让回调函数返回想要插件使用的任何url值,这给开发人员带来了一定的负担但这可能会更容易.

在呼叫站点

myUrlVar = config.onAddToken(myUrlVar);

和回调:

$("#input").tokenInput("/url/to/call",onAddToken: function(oUrl) {
            return "mynew/url";
        }
});

或者,如果回调没有返回任何内容,则可以默认使用该值:

var newUrlVar = config.onAddToken(myUrlVar);
if(newUrlVar)
    myUrlVar = newUrlVar;

如果回调函数中没有返回值,则其值应为null.

猜你在找的jQuery相关文章