Javascript 在选择项上使用选定属性时未激发Jquery更改事件
我有一个使用.NETMVC从模型动态生成的HTML代码。在字段之间,有一个基于模型数据的选择选项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
<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。你能详细说明你的答案吗?