选择一个<选择>以触发任何更改处理程序的方式使用 jQuery 的选项选择>
我正在使用谷歌翻译的下拉菜单来翻译网站,但这不会跨页面持续存在,因此我尝试在页面加载时手动选择所需的选项以使其持续存在。
但是,仅使用 $('#google_translate_element select').val('es');
不会触发实际翻译页面的事件。我不知道如何以实际触发 onchange 事件的方式以编程方式操纵它。
我也尝试过:
$('#google_translate_element select option[value=es]').attr('selected', 'selected').trigger('change');
但
$('#google_translate_element select').val('es').trigger('change');
没有运气。有什么想法吗?
作为记录,这是我正在使用的 HTML(由 Google 翻译脚本输出)
<div id="google_translate_element">
<div class="skiptranslate goog-te-gadget" style="">
<div id=":1.targetLanguage" style="display: inline; ">
<select class="goog-te-combo">
<option value="">Select Language
</option>
<option value="es">Spanish
</option>
</select>
</div>
</div>
</div>
I'm using Google Translate's dropdown menu to translate a site, but this doesn't persist across pages, so I'm trying to manually select the needed option on page load to make it persistent.
However, just using $('#google_translate_element select').val('es');
doesn't trigger the event that actually translates the page. I can't figure out how to manipulate this programmatically in a way that actually triggers the onchange event.
I've also tried:
$('#google_translate_element select option[value=es]').attr('selected', 'selected').trigger('change');
and
$('#google_translate_element select').val('es').trigger('change');
No luck. Any ideas?
For the record, here's the HTML I'm working with (which is output by Google Translate's script)
<div id="google_translate_element">
<div class="skiptranslate goog-te-gadget" style="">
<div id=":1.targetLanguage" style="display: inline; ">
<select class="goog-te-combo">
<option value="">Select Language
</option>
<option value="es">Spanish
</option>
</select>
</div>
</div>
</div>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我发现 http://translateth.is/ 并最终使用它而不是这些废话。默认情况下,它会在页面加载时持续存在,并且仍然使用 Google Translate 的 API。
I found http://translateth.is/ and ended up using that instead of this nonsense. It persists across page loads by default and still uses Google Translate's API.
您的代码对我来说效果很好...代码事件不是“更改”而是“单击”。
Your code works fine for me ... code it be that the event is not "change" but rather "click".
试试这个:
$('#google_translate_element select').bind('change', function(){alert('changed');});
它注册 onchange 事件的处理程序。
Try this:
$('#google_translate_element select').bind('change', function(){alert('changed');});
That registers handler for onchange event.