0

我正在使用 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 新手。任何帮助表示赞赏!

4

2 回答 2

0

除了我必须进行的 length > 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 

是工作解决方案。

于 2012-10-03T22:09:13.433 回答
0

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

什么让你绊倒是在设置变量时。bparam正在设置页面加载。当触发事件发生时,我会将其绑定到设置。

于 2012-10-03T21:36:42.287 回答