Jquery/Javascript 不适用于局部视图
Jquery/Javascript does not work on partial view
我有一个名为 Index 的主视图,其中包含一些文本框,并允许通过部分视图调用将其他文本框添加到屏幕。主视图引用一个 js 文件,其中包含以下代码:
外部 JS 文件:
$("input[type='text']").on("change", function () {
alert("here");
});
每当我修改主视图加载的文本框中的值时,代码都有效。但是,当我尝试更改由局部视图添加的文本框的值时,它什么也没做。
根据我的理解,live() 方法应该处理 dom 中的当前元素以及添加到 dom 中的任何未来元素。现在已被 .on() 取代。因此,我正在使用 .on()。有什么新的东西正在取代我不知道的 .on() 吗? .live() 和 .on() 不适用于我的情况。
出于良好做法,我不想再次将 js/jquery 代码添加到分部视图以使其正常工作。我希望避免冗余并实施良好做法。任何帮助表示赞赏。
加载页面时,on()
必须绑定到 DOM 中已存在的元素,以将事件委托给动态添加的元素:
$(document).on("change", $("input[type='text']"), function () {
alert("here");
});
而不是 $(document)
任何静态父元素都可以用来委托事件。
尝试使用以下代码:
$(document).on("change", "input[type='text']", function () {
alert("here");
});
文档 可以在两个输入的任何父节点上更改
您应该使用事件委托。将所有输入放入容器 div 并将事件放在该父元素上。它适用于动态添加的 dom 个元素。所以如果你把它们放在:
<div class="container">
<input ...>
<input ...>
<input ...>
</div>
jQuery 将是:
$('.container').on('change','input[type="text"]', function(e) {
var el =e.target; //if you need the element clicked on
alert('here');
});
所以,基本上您是在尝试委托事件。为此,根据 jQuery 文档所述,您需要使用如下内容:
```
$('body').on('change', 'input[type="text"]', function(e) {
console.log(e.target); // the input that triggered the event
console.log(e.currentTarget); // the body element
});
```
监听正文中的事件可能太多了,您可能想要监听 'change' 某些特定形式或元素中的事件。
我有一个名为 Index 的主视图,其中包含一些文本框,并允许通过部分视图调用将其他文本框添加到屏幕。主视图引用一个 js 文件,其中包含以下代码:
外部 JS 文件:
$("input[type='text']").on("change", function () {
alert("here");
});
每当我修改主视图加载的文本框中的值时,代码都有效。但是,当我尝试更改由局部视图添加的文本框的值时,它什么也没做。
根据我的理解,live() 方法应该处理 dom 中的当前元素以及添加到 dom 中的任何未来元素。现在已被 .on() 取代。因此,我正在使用 .on()。有什么新的东西正在取代我不知道的 .on() 吗? .live() 和 .on() 不适用于我的情况。
出于良好做法,我不想再次将 js/jquery 代码添加到分部视图以使其正常工作。我希望避免冗余并实施良好做法。任何帮助表示赞赏。
加载页面时,on()
必须绑定到 DOM 中已存在的元素,以将事件委托给动态添加的元素:
$(document).on("change", $("input[type='text']"), function () {
alert("here");
});
而不是 $(document)
任何静态父元素都可以用来委托事件。
尝试使用以下代码:
$(document).on("change", "input[type='text']", function () {
alert("here");
});
文档 可以在两个输入的任何父节点上更改
您应该使用事件委托。将所有输入放入容器 div 并将事件放在该父元素上。它适用于动态添加的 dom 个元素。所以如果你把它们放在:
<div class="container">
<input ...>
<input ...>
<input ...>
</div>
jQuery 将是:
$('.container').on('change','input[type="text"]', function(e) {
var el =e.target; //if you need the element clicked on
alert('here');
});
所以,基本上您是在尝试委托事件。为此,根据 jQuery 文档所述,您需要使用如下内容:
```
$('body').on('change', 'input[type="text"]', function(e) {
console.log(e.target); // the input that triggered the event
console.log(e.currentTarget); // the body element
});
```
监听正文中的事件可能太多了,您可能想要监听 'change' 某些特定形式或元素中的事件。