有没有办法强制 DOM 专注于 JavaScript/jQuery?
Is there a way to force DOM focus in JavaScript/jQuery?
我有一些代码可以根据用户 select 离子动态加载 select 盒子。
我里面有代码指示要像这样 select 编辑特定选项:
//returns a string of <option>s by ID
$('#subtopic_id').load('ajax.php?f=newSubtopic&topic_id=' + id);
$('#subtopic_id').removeAttr('disabled');
alert('hi');
$('#subtopic_id').val(66); //forces SELECT box to show a specific option
但是,只有当我在上面的代码中出现 alert('hi');
时,它才有效。当我删除 alert
行时,试图强制 selection 66 的 select 框似乎不起作用。
可能出了什么问题?我只能想象 alert
以某种方式抓住了焦点,或者可能引入了延迟或者做了一些其他的魔法让下一行工作。
这个问题是因为 load()
是异步的,所以你需要提供一个回调函数,当 AJAX 请求完成并且内容已经放在 DOM 中时执行.只有这样你才能设置你需要的val()
。试试这个:
$('#subtopic_id').load('ajax.php?f=newSubtopic&topic_id=' + id, function() {
$(this).prop('disabled', false).val('66');
});
我有一些代码可以根据用户 select 离子动态加载 select 盒子。
我里面有代码指示要像这样 select 编辑特定选项:
//returns a string of <option>s by ID
$('#subtopic_id').load('ajax.php?f=newSubtopic&topic_id=' + id);
$('#subtopic_id').removeAttr('disabled');
alert('hi');
$('#subtopic_id').val(66); //forces SELECT box to show a specific option
但是,只有当我在上面的代码中出现 alert('hi');
时,它才有效。当我删除 alert
行时,试图强制 selection 66 的 select 框似乎不起作用。
可能出了什么问题?我只能想象 alert
以某种方式抓住了焦点,或者可能引入了延迟或者做了一些其他的魔法让下一行工作。
这个问题是因为 load()
是异步的,所以你需要提供一个回调函数,当 AJAX 请求完成并且内容已经放在 DOM 中时执行.只有这样你才能设置你需要的val()
。试试这个:
$('#subtopic_id').load('ajax.php?f=newSubtopic&topic_id=' + id, function() {
$(this).prop('disabled', false).val('66');
});