0

我正在使用jquery tokeninput插件,我希望json令牌输入数据依赖于可以在窗体某处找到的值。 我的代码如下所示:jquery字符串插值导致问题

jQuery(function() { 
    var bparam; 
    if ($('#tokens')) { 
    bparam = $('#select_menu').val(); 
    return $('#tokens').tokenInput(("/tokens.json?b=" + bparam)({ 
     theme: 'facebook', 
    })); 
    } 
}); 

所以插件应该提出一个要求,如/tokens.json?b=124如果从select_menu的div值为124

不知怎的,这只是没有按”工作,我不知道为什么。我仍然是一个JavaScript新手。 任何帮助表示赞赏!

+1

如果您想检查是否存在$('#tokens')元素,您应该使用if($('#tokens').length)。 – Anoop

+0

所以你想要这个运行在DOM上准备好了吗? select_menu div如何改变它的值? –

+0

是'$(“#select_menu”)''input'元素?如果不是,'val'将不起作用。 – Shmiddty

回答

0

if ($('#tokens'))将返回一个空数组([]),所以无论那些总是评估为真。我猜你想要if ($('#tokens').length)。如果数组中有一个项目,它将评估为true,如果它为空,则评估为false。

什么让你跳起来是变量被设置。正在页面加载中设置bparam。当发生触发事件的任何事件时,我会绑定它以进行设置。

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 

是工作解决方案。