Javascript JQuery不是';识别一个#id选择器似乎取决于URL
我正在编写一个RubyonRails应用程序。以下jQuery代码包含在index.html.erb文件的head标记中,该文件是站点上所有页面的模板Javascript JQuery不是';识别一个#id选择器似乎取决于URL,javascript,jquery,Javascript,Jquery,我正在编写一个RubyonRails应用程序。以下jQuery代码包含在index.html.erb文件的head标记中,该文件是站点上所有页面的模板 <script> $(document).ready(function() { $("#select_mailshot").click(function () { alert('mailshot'); document.location.href = "/products/1"; });
<script>
$(document).ready(function() {
$("#select_mailshot").click(function () {
alert('mailshot');
document.location.href = "/products/1";
});
$("#select_blog").click(function () {
alert('blog');
document.location.href = "/messages";
});
$("#select_contact").click(function () {
alert('contact');
document.location.href = "/contacts/1";
});
});
</script>
$(文档).ready(函数(){
$(“#选择_邮件快照”)。单击(函数(){
警报(“邮件快照”);
document.location.href=“/products/1”;
});
$(“#选择_博客”)。单击(函数(){
警报(“博客”);
document.location.href=“/messages”;
});
$(“#选择_联系人”)。单击(功能(){
警报(“联系”);
document.location.href=“/contacts/1”;
});
});
(警报步骤在此处用于调试)
index.html.erb中的以下html代码
<ul>
<li id="select_mailshot">Mailshot</li>
<li id="select_blog">Blog</li>
<li id="select_contact">Contact us</li>
</ul>
邮件快照
博客
- 联系我们
其目的是有效地创建3个按钮
当点击任何一个按钮时,一切正常
当从(通过中间按钮)点击任何按钮时,一切正常
启动时,所有设备停止工作(警报不会触发)。事实上,从一开始,它就停止工作了
我已经尝试解决这个问题好几个小时了,就我所见,工作和非工作条件之间的唯一区别就是url
有人能解释一下这里发生了什么吗?这个javascript是内联的吗
如果不是,那么该链接可能是相对的,因此当您尝试从messages/40加载它时,您需要。/script.js。另一种解决方案是使用绝对URL()或虚拟URL(/script.js)。firebug告诉您什么?页面上有javascript错误吗?如果是,它们是什么?由于cherouvim和digitaljoel,您是否确定jQuery库正确地包含在更深的页面中(即它是相对路径?) 这是由于包含了相对于当前URL的javascript文件 以下内容包含在头标签中
<script type="text/javascript" src="javascripts/jquery-1.3.2.js"></script>
我把它改成了
<script type="text/javascript" src="/javascripts/jquery-1.3.2.js"></script>
(请注意src属性中的额外“/”),一切都按预期工作
我在检查了服务器和浏览器上的错误日志后解决了这个问题
感觉有点傻,但这是一个很好的教训。我用FaceBox创建模式覆盖,但我不明白为什么我会遇到同样的问题 我发现侦听器在可见之前并没有被附加到HTML元素。(如果我查看源代码,这些项目是可用的,但jQuery似乎在它可见之前不会附加侦听器。) 对于任何有相同问题的人,我建议将click()代码移动到您所附加的HTML元素可见的位置 另外,我发现按ID选择确实比按类选择会带来更多的问题。我不知道为什么。(否,没有重复的ID。)
希望这能帮助有同样问题的人 javascript是内联的,但是到jQuery的链接是相对的,感谢Hintcheck检查错误日志是一个明显的步骤,而jQuery库是相对的,没有正确包含,谢谢。几天前我看到了同样的问题。更新:ID选择器的问题原来是FaceBox的工作方式。它实际上复制了div元素,这当然意味着最终会有重复的id。