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 

是工作解決方案。