Javascript razor上的jquery选择器不触发事件
您能建议一下,如果下面的代码触发jqueryonchange事件,它会工作吗Javascript razor上的jquery选择器不触发事件,javascript,jquery,jquery-ui,razor,Javascript,Jquery,Jquery Ui,Razor,您能建议一下,如果下面的代码触发jqueryonchange事件,它会工作吗 <div id= "abc"> </div> @Html.Partial("partial.cshtml") onchnage事件不会触发。您正在演示的HTML结构是: <div id="abc"> </div> <select id="xyz"> </select> 因此,后者从未被发现,因为它不包含在前者中。但是,由于选择器使用的是id,
<div id= "abc">
</div>
@Html.Partial("partial.cshtml")
onchnage事件不会触发。您正在演示的HTML结构是:
<div id="abc">
</div>
<select id="xyz">
</select>
因此,后者从未被发现,因为它不包含在前者中。但是,由于选择器使用的是id
,因此首先不必将其缩小到包含元素的范围。您只需根据id
进行选择即可:
$(“#xyz”)。关于(“更改”,函数(){
警报(“hi”);
});代码>
0
1.
函数.find()将查找所选元素的匹配子元素,但实际上,您正在查找一个“同级”元素,它是“abc”div的同级元素。一种解决方案是,您可以调用.sibles()来查找该同级元素,然后为onchange事件添加一个事件侦听器:
$('#abc').siblings('#xyz').on('change', function() {
alert("Changes");
});
嗨,大卫。。谢谢你的回复。是的,从上个小时起我就一直在试图让它触发,但它就是不触发。。我使用了VisualStudio调试器,当页面加载时,我可以看到函数被注册,尽管没有任何警报。根据我的理解,如果这段代码是正确的,那么当我做出选择时,onchange应该触发。。我不知道如何触发和调试实际上我只想选择35; xyz inside#abc#xyz是一个局部视图,是一个可重用的组件,在应用程序内部的许多地方使用。我不想改变那些人的行为。。只有在我的div#abc中使用它时,它才应该发出警报。@kimi86:但是你的#xyz
元素不在你的#abc
元素中。至少在你展示的代码中没有。因此,如果您只想选择#abc
中的一个元素,那么您的代码当前正在工作,并且正在成功地找到零个匹配元素。这听起来也像是在多元素id
s上重复使用相同的xyz
值,这是无效的HTML,并使JavaScript的行为未定义<代码>id
值在文档中必须是唯一的。
<div id="abc">
</div>
<select id="xyz">
</select>
$("#abc").find("#xyz")
$('#abc').siblings('#xyz').on('change', function() {
alert("Changes");
});