Javascript 在选择项上使用选定属性时未激发Jquery更改事件

Javascript 在选择项上使用选定属性时未激发Jquery更改事件,javascript,jquery,html,html-select,Javascript,Jquery,Html,Html Select,我有一个使用.NETMVC从模型动态生成的HTML代码。在字段之间,有一个基于模型数据的选择选项 <select class="myClass" data-val="true" id="sampleSelect" name="sampleSelect"> <option value="">Select an option</option> <option value="1">1</option> <option val

我有一个使用.NETMVC从模型动态生成的HTML代码。在字段之间,有一个基于模型数据的选择选项

<select class="myClass" data-val="true" id="sampleSelect" name="sampleSelect">
  <option value="">Select an option</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3" selected="selected">3</option>
</select>
或者像这样:

$('#sampleSelect').change(function () {
    var test = $('#sampleSelect').val();
});
$('#sampleSelect').on('change', function () {
    var test = $('#sampleSelect').val();
});
$(function() {
    $('#sampleSelect').change(function () {
        var test = $('#sampleSelect').val();
    });
});
或者甚至与代表。。。这些都不管用。似乎没有做任何更改,选项值3保留在选定属性中

我不想修改HTML,我只想使用正确的javascript代码捕获事件

你有什么建议吗

编辑:选定的属性保留为值3。即使我选择了不同的项目。更改事件不会触发。我不知道为什么。这是我的问题

最终编辑:我的错,选择是正确的。问题是有两个选择具有相同的id,jQuery一直在屏幕上其他地方选择隐藏的一个

谢谢您的快速回答。

您可以尝试:

$(document).on("change", "#sampleSelect", function () {
    // Stuff
});

我想你是说HTML内容是在页面加载后加载的?如果是,请使用

$(document).on('change', '#sampleSelect', function () {
    var test = $('#sampleSelect').val();
    // OR
    var test = $(this).val();
    // OR
    var test = this.value;
});

即使元素最初不可用,也会附加事件。

动态生成HTML代码。因此,必须使用$document.on;jquery

例如:

$(document).on('change','#sampleSelect', function () {
    // your code
});
您的代码似乎是一个文件。 演示:

我猜您可能希望在ready方法中添加一个事件处理程序:

文件:

这相当于推荐的方式:

$(function() {
  // Handler for .ready() called.
});
因此,您的代码可以如下所示:

$('#sampleSelect').change(function () {
    var test = $('#sampleSelect').val();
});
$('#sampleSelect').on('change', function () {
    var test = $('#sampleSelect').val();
});
$(function() {
    $('#sampleSelect').change(function () {
        var test = $('#sampleSelect').val();
    });
});
这里有一个教程:

如果您选择的是同一个元素,则可能会重复,并且不会发生任何更改。因此,事件将不会触发。由于您的时间安排,这些可能不起作用。如果html是在jQuery代码运行之后生成的,那么代码不会影响html元素。如果是这种情况,您需要将您的代码附加到已经存在的元素,如下面的答案,或者您的代码正在工作,您的意思是什么。。。未触发更改事件或未更新所选选项?我将改用此选项,因为我们已经在事件设置中为元素建立了上下文。var selectedValue=$e.target | | this.val;对不起,我不理解var test=$'sampleSelect'.val;当您知道该元素的事件已经存在时,该事件是没有意义的。通过执行所做的操作,可以重新查询对象。实际上你已经有了。您可以使用它,也可以为传入事件参数设置e,并使用e.target获取值。只需:$document.on'change','sampleSelect',function{var test=$e.target.val;//或$this.val;};对不起,我以为你是OP。是的,$'sampleSelect'。val可以是$this.val或this.value。你能详细说明你的答案吗?