我正在使用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函数?
答案 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);