【发布时间】:2013-06-26 02:16:18
【问题描述】:
我编写了一个简短的脚本,在 Chrome 上运行良好:
function updateSentence(){
$(document).ready(function() {
t = event.target.id;
$("#S"+t).html($("#"+t).val());
});
}
但是,在 Firefox 事件中没有定义。我发现了一些类似的问题,这些问题表明需要将事件作为参数传递给函数:
function updateSentence(event){
$(document).ready(function(event) {
t = event.target.id;
$("#S"+t).html($("#"+t).val());
});
}
然而,对我来说,这个解决方案并不能解决 Firefox 的问题,它实际上破坏了它在 Chrome 中的工作方式。在 Chrome 中,最终会说 event.target 在传递这些参数时未定义。
我做错了什么?
在收到几个 cmets 后,我意识到我对 jQuery 的总体看法是错误的。我不想在每次更新句子时都调用$(document).ready。用这些知识清理函数我最终得到了:
function updateSentence(){
t = event.target.id;
$("#S"+t).html($("#"+t).val());
}
这仍然可以正确更新 Chrome 中的句子,但 target 在 Firefox 中仍然未定义。我需要做什么才能让它在 Firefox 中工作?我还在 jQuery 中做一些根本错误的事情吗?
另外,要回答 cmets 中的问题,我要查找的事件是触发 updateSentence() 的 onchange 事件。这应该在选择/文本字段更改时调用。
(总的来说,我对jQuery 和JavaScript 还是新手,我确信我只是犯了一个简单的错误。)
我找到了答案。当网站允许时,我会在几个小时后发布。
【问题讨论】:
-
您期望的目标是什么?
$(document).ready将 jQuery 本身作为参数发送 - 没有目标元素。 -
我不认为在另一个函数中运行 (document).ready 是一个好主意。它应该在“就绪”页面上运行一次。如果在该事件之后调用,它将不会按照您的意愿行事。
-
您使用 'however in Firefox' 表明,在其他浏览器中,您从某个地方获得了结果。你真的不应该。不是那个脚本。
-
啊,看来我的问题是我对 JQuery 基础知识的理解。我会先看看我的功能是如何设置的。谢谢!
-
@golmschenk - 您能否根据何时以及为何调用它来发布更多代码/html?在您的更新中,您有
event,但没有定义它。这是从哪里来的?updateSentence是如何被调用的?
标签: javascript jquery events firefox google-chrome