2011-04-05 87 views
0

我很困惑&相当没有经验的jQuery。我试图从thickbox窗口将值返回到父页面上的输入元素。为了确定正确的输入框,我试图连接两个值,其中一个我从thickbox窗口成功获取,另一个值是一段文本,如下面的示例。连接变量作为选择器不工作(Javascript/jquery)

grab_flavor = $('#flavor').val(); //contains 'apple' 
alert(grab_flavor); // returns 'apple' 
juice = "#" + grab_flavor + "juice"; 
alert(juice); // returns '#applejuice' 
$(juice , top.document).val("favorited"); //doesn't seem to work... 
flavor = "#apple"; 
juice = flavor + "juice"; 
$(juice , top.document).val("favorited"); // works 

我似乎无法找出原因,第一个串联不工作,即使它返回时,我与警报显示它正确的价值,而不是什么都不会发生。

我尝试了多种不同的方式来连接,但是当我尝试包括'grabflavor'时,它们都失败了......非常感谢!

更新:致力于更好的活生生的例子......

更新2(最终):想通了......语法毕竟是有效的,没有错的串联,我只是忽略了一个小因为我正在处理看起来相同的非常长的选择器......下一次我将采取更长的休息时间,这样我可以从新鲜的眼睛中受益。固执地追求理解一个问题并不总是如此。感谢评论者张贴并指出jsfiddle和jsbin,这两个令人难以置信的有用发现!

+1

'$(#flavor).val()'是一个错字吗?它应该是'$('#flavor')。val()' – JohnP 2011-04-05 06:20:46

+1

'alert(juice)也一样。 //返回'applejuice''。它应该是'警惕(果汁); //返回'#applejuice'',不应该吗? – 2011-04-05 06:21:42

+0

抱歉错别字......更正了,谢谢! – 2011-04-05 06:27:50

回答

0

除非是在转录过程中的另一个错字,问题就在这里:

juice = "#" + grabflavor + "juice"; 

你错过了下划线的grab_flavor。正确,并且它有效(live copy)。

+0

这工作,谢谢!在我的原始代码的环境中肯定还有其他一些问题(如你猜测,缺失的下划线是一个错字),但至少我知道它应该是原则性的。 – 2011-04-05 21:35:43