我写了一个在 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 在传递这些时未定义。
我做错了什么?
在收到一些评论后,我意识到我对 jQuery 的总体看法是错误的。我不想在每次更新句子时调用 $(document).ready。用这些知识清理函数,我最终得到:
function updateSentence(){
t = event.target.id;
$("#S"+t).html($("#"+t).val());
}
这仍然正确地更新了 Chrome 中的句子,但是 target 在 Firefox 中仍然是未定义的。我需要做什么才能让它在 Firefox 中运行?我是否仍然在 jQuery 中做一些根本性的错误?
此外,为了回答评论中的一个问题,我正在寻找的事件是触发 updateSentence() 的 onchange 事件。这应该在选择/文本字段更改时调用。
(总的来说,我对 jQuery 和 JavaScript 还是陌生的,我确信我只是犯了一个简单的错误。)
我找到了答案。我会在网站允许的几个小时内发布。
最佳答案
是的,非常好。如果你重新考虑你是怎么做到的,它就更有意义了。 将您的绑定(bind)与您的功能分开,这是您正在做的事情的一半。
$(function() { // Equivalent of Document Ready; You only need this once;
// BINDINGS HERE
$('someSelector').on('change keypress', function(event) {
updateSentence(this);
});
});
function updateSentence(elem) {
$('#S' + elem.id).html( elem.value ) ;
}
此外,这是我建议甚至不使用辅助功能的情况之一。在某些情况下,您想要做的事情非常简单,以至于很难证明有一个函数可以调用而不是您在绑定(bind)上所做的事情。
$(function() {
$('someSelector').on('change keypress', function(event) {
$('#S' + this.id).html( this.value ) ;
});
});
您会注意到在这两种情况下都不需要 event。但是,即使对于 FF,它也是可用的,因为它将作为 n 参数(function(event))传入。
在 FF 的代码中未定义“目标”的原因是因为 FF 不会像大多数浏览器那样从空中抓取 event。因此,如果您无法设置您的代码以消除对 event 的需求,或者无法像我的示例那样将其传入,您可以通过 window.event 引用它。
关于javascript - jQuery/JavaScript - Firefox 上的 event.target.id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9894426/
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我有一个.pfx格式的证书,我需要使用ruby提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o
我有一个电子邮件表格。但是我正在制作一个测试电子邮件表单,用户可以在其中添加一个唯一的电子邮件,并让电子邮件测试将其发送到该特定电子邮件。为了简单起见,我决定让测试电子邮件通过ajax执行,并将整个内容粘贴到另一个电子邮件表单中。我不知道如何将变量从我的HAML发送到我的Controllernew.html.haml-form_tagadmin_email_blast_pathdoSubject%br=text_field_tag'subject',:class=>"mass_email_subject"%brBody%br=text_area_tag'message','',:nam
因此,当我遵循MichaelHartl的RubyonRails教程时,我注意到在用户表中,我们为:email属性添加了一个唯一索引,以提高find的效率方法,因此它不会逐行搜索。到目前为止,我们一直在根据情况使用find_by_email和find_by_id进行搜索。然而,我们从未为:id属性设置索引。:id是否自动索引,因为它在默认情况下是唯一的并且本质上是顺序的?或者情况并非如此,我应该为:id搜索添加索引吗? 最佳答案 大多数数据库(包括sqlite,这是RoR中的默认数据库)会自动索引主键,对于RailsMigration
我正在使用Watir运行一个Ruby脚本来为我自动化一些事情。我试图自动将一些文件保存到某个目录。因此,在我的Mozilla设置中,我将默认下载目录设置为桌面并选择自动保存文件。但是,当我开始运行我的脚本时,这些更改并没有反射(reflect)出来。似乎首选项恢复为默认值。我已经包括以下内容require"rubygems"#Optional.require"watir-webdriver"#Forwebautomation.require"win32ole"#Forfilesavedialog.并打开一个新的firefox实例:browser=Watir::Browser.new(:
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的