JQuery unpack数组参数

时间:2015-06-18 08:27:10

标签: javascript jquery typeahead.js

我正在使用typeahead typeahead 如下:

<?xml version="1.0" encoding="UTF-8"?> <Configuration status="trace" packages="apps.adfAppUI.ui.bean"> <Appenders> <File name="file" fileName="./adfAppCustomLogs/TestLog4j2.log"> <PatternLayout> <Pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} %-5level %class %L %M - %msg%xEx%n</Pattern> </PatternLayout> </File> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout pattern="%m%n"/> </Console> <Routing name="AppRouting"> <Routes pattern="$${ctx:ROUTINGKEY}"> <!-- This route is chosen if ThreadContext has value 'user' for key ROUTINGKEY. --> <Route key="USER"> <RollingFile name="Rolling-USER-${ctx:ROUTINGKEY}-${ctx:LOGGEDSESSIONID}" append="true" fileName="./adfAppCustomLogs/${ctx:ROUTINGKEY}-${ctx:LOGINID}-${ctx:LOGGEDSESSIONID}.log" filePattern="./adfAppCustomLogs/archive/${date:yyyy-MM}/${ctx:LOGINID}-%d{MM-dd-yyyy}-%i.txt.gz"> <PatternLayout> <Pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} %-5level %class %L %M - %msg%xEx%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="6" modulate="true" /> <SizeBasedTriggeringPolicy size="50 MB"/> </Policies> </RollingFile> </Route> </Routes> </Routing> <Async name="async" bufferSize="1000" includeLocation="true"> <AppenderRef ref="AppRouting" /> </Async> </Appenders> <Loggers> <Root level="trace"> <!--<AppenderRef ref="file" level="DEBUG"/> --> <AppenderRef ref="async"/> <AppenderRef ref="STDOUT"/> </Root> </Loggers> </Configuration>。然而,数据集的数量是动态的,我将它们计算并存储在一个数组中(以及选项)。那么如何将数组作为参数列表传递?我尝试使用javascript apply函数:

$('my_elements').typeahead(options, dataset1, dataset2, ...)

但是一个错误被处理了:未定义了typeahead!那么如何在jquery选择器的结果上使用apply函数?

1 个答案:

答案 0 :(得分:2)

当您尝试直接访问typeahead时,它会尝试在当前范围或祖先范围内查找具有该名称的引用。

但由于typeahead是一个插件,因此它是jQuery原型对象的属性,因此您需要通过$.fn.typeahead访问它。

另一个指出要注意的是插件里面的this应该引用jQuery对象而不是dom元素所以

$('my_elements').each(function () {
    $.fn.typeahead.apply($(this), params_array);
});

$.fn.typeahead.apply($('my_elements'), params_array);