我正在使用jquery tokeninput插件,我希望json令牌输入数据依赖于可以在表单中某处找到的值。 我的代码如下所示:
jQuery(function() {
var bparam;
if ($('#tokens')) {
bparam = $('#select_menu').val();
return $('#tokens').tokenInput(("/tokens.json?b=" + bparam)({
theme: 'facebook',
}));
}
});
因此,如果select_menu div中的值为124,则插件应该发出请求,例如/tokens.json?b=124。
不知怎的,这不起作用,我不知道为什么。我还是一个javascript新手。 任何帮助表示赞赏!
答案 0 :(得分:0)
if ($('#tokens'))
将返回一个空数组([]
),因此无论什么总是会评估为true。我猜你想要if ($('#tokens').length)
。如果数组中有一个项目,它将评估为true,如果它为空,则计算结果为false。
什么在绊倒你是在设置变量时。正在设置页面加载bparam
。当触发事件发生时,我会将其绑定为设置。
答案 1 :(得分:0)
除了长度> 0调用我必须做(感谢指出Stuart Nelson和Shusl!),事实证明,coffeescript中的字符串插值在某种程度上并不像我想要的那样工作。翻译成javascript的相同代码确实有效。 Coffeescript正被翻译成:
jQuery(function() {
var bparam;
if ($('#tokens').length > 0) {
bparam = $('#select_menu').val();
return $('#tokens').tokenInput(("/tokens.json?b=" + bparam)({
theme: 'facebook',
}));
}
});
现在,直接用javascript / jquery编写的工作代码是:
jQuery(function() {
if ($("#tokens").length > 0) {
var bparam
bparam = $('#select_menu').val();
return $('#tokens').tokenInput("/tokens.json?b=" + bparam, {
theme: 'facebook',
});
}
});
请注意
中的这些额外括号(("/tokens.json?b=" + bparam)
,而
("/tokens.json?b=" + bparam
是工作解决方案。