【问题标题】:Concatenated variable as selector not working (Javascript/Jquery)串联变量作为选择器不起作用(Javascript/Jquery)
【发布时间】:2011-04-05 06:18:40
【问题描述】:

我对 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,这两个非常有用的发现!

【问题讨论】:

  • $(#flavor).val() 是错字吗?应该是$('#flavor').val()
  • alert(juice); // returns 'applejuice' 也是如此。应该是alert(juice); // returns '#applejuice',不是吗?
  • 抱歉有错别字...已更正,谢谢!
  • @mrs Juice:为什么不使用复制粘贴的现代奇迹,而不是重新键入您要调试的代码?
  • 给我们一些您的实际代码和html,您甚至可以尝试在jsfiddle.net 上重新创建错误并与我们分享。

标签: javascript jquery thickbox


【解决方案1】:

除非在转录过程中出现另一个错字,否则问题就在这里:

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

grab_flavor 中缺少下划线。更正它,它可以工作 (live copy)。

【讨论】:

  • 这行得通,谢谢!我的原始代码的环境中一定还有其他问题(缺少的下划线是您怀疑的错字),但至少我知道它应该在原则上起作用。
猜你喜欢
  • 2013-10-17
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 2013-02-08
  • 2016-05-26
  • 1970-01-01
相关资源
最近更新 更多