有没有办法强制 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');
});