Javascript 使JQuery识别新添加的元素(事件问题已解决,但…)

Javascript 使JQuery识别新添加的元素(事件问题已解决,但…),javascript,php,jquery,html,Javascript,Php,Jquery,Html,首先,这是我的代码 HTML 但是现在我在操作新添加的元素时遇到了问题 我期望的工作代码是 $('#lyr_1').on('change', '#trans0_adv', function () { $("#trans0_sub").html("<option value="" selected>Select Adviser's Subjects</option>"); }); 可以检测到,但是 $("#trans0_sub").html("&l

首先,这是我的代码

HTML 但是现在我在操作新添加的元素时遇到了问题 我期望的工作代码是

$('#lyr_1').on('change', '#trans0_adv', function () {
        $("#trans0_sub").html("<option value="" selected>Select Adviser's Subjects</option>");
    });
可以检测到,但是

$("#trans0_sub").html("<option value="" selected>Select Adviser's Subjects</option>");

不行。我试着把代码放进去。加载到lyr_uudivs中,但它不起作用。我已经在网上搜索过了,但找不到答案或类似的答案。

以编程方式修改a的所选选项不会触发更改事件

在执行更改后,您必须使用以下方法明确触发它:

$("#trans0_sub").trigger('change');
然而,人们通常需要这样做,因为一开始设计不正确。我并不是说用这种方式触发事件总是错误的,但是如果您仅仅因为希望调用特定的已知行为而触发事件,那么最好明确地说明您想要的行为

例如

最好写为:

$('#some-select').change(function () {
    someBehavior();
});

function someBehavior() {
}

//later

$('#some-select').val(someValue);
someBehavior();
只有当用户与元素交互时,更改事件才能工作,因此,要工作,您必须手动激活事件,如


有了这些,您就可以实现您想要的目标:

活动开始了。我甚至尝试使用alert来测试它是否有效,它确实有效。现在,我真的需要从另一个新添加的元素中检测一个新添加的元素,而不需要将它们全部放在一个函数Edit中:我的事件就像yours@Calvin你能在你的问题中澄清这一点吗?检测新添加的元素是什么意思?当你运行你提到的代码块时,你期望会发生什么?我很抱歉解释得不好,这是我生活中不好的部分,而且我还需要再次学习很多技术术语。无论如何,大家都知道jQuery函数不会绑定新添加的dom元素。这就是为什么会有这样的事件委派。我期望发生的是,当用户在select_1trans_type中选择一个选项时,程序将在页面中创建几个select/inputtext字段,目前没有问题。然后,当用户在新添加的select\u 2trans0\u adv中选择一个选项时,select\u 3trans0\u sub将使用.load根据select\u 2中的值更新其选项,而这现在不会发生,这会导致我的头痛,对吗now@charlietfl当意图是通知时,触发事件就完全可以了。我想说的是,你通常不应该为了调用一个特定的行为而触发一个事件,因为你没有将行为本身从处理程序中分离出来,因此除了直接调用行为之外,你没有其他选择来触发一个事件;谢谢你的回答,但这无助于回答为什么我不能做像$trans0_sub.htmlSelect顾问的主题这样的事情;在一个新增加的元素中,是否有人能回答我为什么选择顾问的主题这行代码$trans0_sub.htmlSelect;在我提供的代码中无法检测到?
$('#lyr_1').on('change', '#trans0_adv', function () {
        $("#trans0_sub").html("<option value="" selected>Select Adviser's Subjects</option>");
    });
$('#lyr_1').on('change', '#trans0_adv', function () {}
$("#trans0_sub").html("<option value="" selected>Select Adviser's Subjects</option>");
$("#trans0_sub").trigger('change');
$('#some-select').change(function () {
    //some behavior
});

//later
$('#some-select').val(someValue).trigger('change');
$('#some-select').change(function () {
    someBehavior();
});

function someBehavior() {
}

//later

$('#some-select').val(someValue);
someBehavior();
$('select').html('blabla').change();