Jquery 1.4:两个函数不能在同一页面上一起工作

Posted

技术标签:

【中文标题】Jquery 1.4:两个函数不能在同一页面上一起工作【英文标题】:Jquery 1.4: Two functions not working together on same page 【发布时间】:2011-01-16 17:59:31 【问题描述】:

我有两个 Jquery 函数,我可以单独在页面上正常工作,但当我同时拥有它们时就不行了。我无法看到我可能做错了什么,因为我在其他页面上也有类似的代码运行良好。

第一个功能:

$(document).ready(function()

   $("#add-questions").click(function() $("#extra-questions").fadeIn(800););
);

第二个功能:

$(document).ready(function()

   if($phpTRIGGER == true)
   
      $("#pop-text").html("Message sent.");
      $("#pop").show();
      setTimeout(function() $("#pop").animate( height: "hide", opacity: "hide", "medium");, 4000);
   
);

“$PHPTRIGGER”是我传递给 Jquery 的 php 变量(*** 不允许我放入真正的 php,所以我已经这样标记了)。

我尝试将这两个函数放在同一个“文档就绪”中,尝试交换顺序,但它们不能一起工作。

有什么想法吗?

谢谢。

更新:

这是第一个无法响应点击事件的函数。它仅在执行第二个功能(链接到表单提交)后才起作用。仍然想知道为什么会这样。

最终更新:

解决了 Firebug 的问题。必须用空值初始化通过 PHP 传递的 PHPTRIGGER,否则第一个函数会失败。实际上这很有趣,因为该函数不接受任何 PHP。基本上,第二个函数中的(严格)语法错误导致第一个函数失败,而第二个函数本身工作正常。

【问题讨论】:

如果您还没有在 Firebug 中使用 Firefox,请安装它(或类似 Firebug for IE)并检查控制台是否有任何错误消息。 而且您很确定目标“add-questions”元素确实存在并且确实具有该“id”值(并且确实是唯一具有该“id”值的东西)?正如@Felix 所说,Firebug 在尝试确定设置的合理性时非常宝贵。 安装了firebug,现在看看。 是的,一切正常。就像我提到的,如果我删除任何一个功能,另一个会正常工作。如果我两个都在,第一个失败... @Felix... 这个“答案”感谢您,所以如果您想在下面添加答案,我会将其标记为已接受。 【参考方案1】:

当我将它们放入测试页面时,它们对我有用:

pop 在 4 秒后隐藏。

pop-text 显示“消息已发送”。

当我单击#add-questions 时,#extra-questions div 淡入(假设初始显示:无)

如果您想要除此之外的其他内容,您可能只是在看自己的代码时睡眼惺忪(也许您想要两个地方都用#pop,而不是一个地方用#pop,另一个地方用#pop-text?)

您可能会尝试的其他事情:在 Chrome 中运行并检查 JS 控制台是否有错误(以防您当前的调试器没有向您显示错误并且执行只是暂停)。检查您的 HTML 以确保引用的 id 确实存在。检查您的 CSS 以确保您的初始值是正确的。确保您的 $PHPTRIGGER 变量正确传递。

如果您有更多信息或发现任何问题,请告诉我们。

【讨论】:

没问题——firebug 很棒,它也有一个 JQuery 插件——但我仍然将 Chrome 作为辅助调试器,因为有时一个会捕获另一个没有捕获到的东西。根据我的经验,当 javascript 中的某些内容似乎“不可行”时,这是因为某个地方的一个简单错误,大多数时候调试器会立即告诉您。

以上是关于Jquery 1.4:两个函数不能在同一页面上一起工作的主要内容,如果未能解决你的问题,请参考以下文章

与同一页面上的两个 jquery 日期选择器冲突

同一页面上的两个 jQuery Ajax 调用,一个有效,另一个无效

当同一页面上有两个菜单实例时,Jquery mmenu 不起作用

jQuery如何使$(this)选择器触发多个类

jQuery Chosen:在同一页面上显示多个选择字段

如何将一个 ajax 数据源与多个 JQuery 数据表一起使用