jquery - Jquery pageload选择更改在移动设备上不起作用
问题描述
我有一个奇怪的问题。我正在尝试更改页面加载时的选定选项。这适用于桌面,但不适用于移动设备。
<select id="gui-form-details-type" name="customer[type]">
<option value="private" selected="selected">Option1</option>
<option value="company">Option2</option>
</select>
我尝试过的是:
$(function(){
$('body').live('change','#gui-form-details-type', function() {
$("#gui-form-details-type").find('option[value=private]').removeAttr("selected");
$("#gui-form-details-type").find('option[value=company]').attr('selected','selected');
}).change();
// and
$("#gui-form-details-type").on('change', function(){
.....
}).change();
// and
$(document).on('change', '#gui-form-details-type', function(){
....
}).change()
});
我什至将它包装在一个在页面加载时触发的函数中。这在 iOS 或 Android 上不起作用有什么特别的原因吗?
非常感谢任何帮助!
解决方案
这将是我建议的修复。
function alterGuiFormDetailsType() {
const $element = $('#gui-form-details-type');
if ($element.length) {
$element.find('option[value="private"]').removeAttr('selected');
$element.find('option[value="company"]').attr('selected', 'selected');
}
}
$(document.body).on('change', '#gui-form-details-type', alterGuiFormDetailsType);
alterGuiFormDetailsType();
从事件处理程序中提取逻辑并在页面加载时直接调用它。如果该元素尚不存在,它将尝试执行,但不会做任何事情。
推荐阅读
- node.js - 如何使用护照节点设置管理员密码
- regex - 给定两个正则表达式,确定一个是否是另一个的补充
- fiddler - fiddler 4根本没有启动,没有错误代码
- android - 错误:1 在构建 Gradle android studio 3.3.1
- excel - 使用 VBA 根据匹配条件替换列中的值
- spring-batch - 在 Spring Batch 中,如何将 tasklet 步骤配置为 .faultTolerant for DeadlockLoserDataAccessException
- python - 删除列表中括号中的 [ ] 和逗号
- r - R - 将数字年份转换为日期格式 - 1990 到 01/01/1990
- php - PHP - 从父字符串中删除以特定字符开头和结尾的子字符串
- bash - 如何使用 /bin 可执行文件创建/编译自定义 Bash 运行时 Lambda 层?