Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery/Javascript不适用于部分视图_Javascript_Jquery_Asp.net Mvc - Fatal编程技术网

Jquery/Javascript不适用于部分视图

Jquery/Javascript不适用于部分视图,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我有一个主视图调用索引,其中包含一些文本框,并允许通过部分视图调用将其他文本框添加到屏幕上。主视图引用一个js文件,该文件具有以下代码: 外部JS文件: $("input[type='text']").on("change", function () { alert("here"); }); 每当我修改主视图加载的文本框中的值时,该代码都会工作。但是,当我试图更改由“局部视图”添加的文本框中的值时,它不会执行任何操作 根据我的理解,live()方法应该处理dom中的当前元素和将来添加到dom

我有一个主视图调用索引,其中包含一些文本框,并允许通过部分视图调用将其他文本框添加到屏幕上。主视图引用一个js文件,该文件具有以下代码:

外部JS文件:

$("input[type='text']").on("change", function () {
 alert("here");
});
每当我修改主视图加载的文本框中的值时,该代码都会工作。但是,当我试图更改由“局部视图”添加的文本框中的值时,它不会执行任何操作

根据我的理解,live()方法应该处理dom中的当前元素和将来添加到dom中的任何元素。现在已将其替换为.on()。因此,我使用.on()。有什么我不知道的新东西正在取代.on()吗。live()和.on()在我的情况下不起作用

为了获得良好的实践,我不希望再次将js/jquery代码添加到部分视图中以使其正常工作。我希望避免冗余并实施良好实践。感谢您的帮助

加载页面时,必须将()上的
绑定到DOM中已存在的元素,以将事件委托给动态添加的元素:

$(document).on("change", $("input[type='text']"), function () {
  alert("here");
});
任何静态父元素都可以用来委托事件,而不是
$(文档)

加载页面时,必须将()上的
绑定到DOM中已存在的元素,以将事件委托给动态添加的元素:

$(document).on("change", $("input[type='text']"), function () {
  alert("here");
});

可以使用任何静态父元素来委派事件,而不是
$(文档)

尝试使用以下代码:

$(document).on("change", "input[type='text']", function () {
 alert("here");
});

可以在任何父节点上更改两个输入的文档

请尝试使用以下代码:

$(document).on("change", "input[type='text']", function () {
 alert("here");
});

可以在任何父节点上更改两个输入的文档

您应该使用事件委派。将所有输入放在容器div中,并将事件放在此父元素上。它适用于动态添加的dom元素。所以如果你把它们放进去:

<div class="container">
  <input ...>
  <input ...>
  <input ...>
</div>

您应该使用事件委派。将所有输入放在容器div中,并将事件放在此父元素上。它适用于动态添加的dom元素。所以如果你把它们放进去:

<div class="container">
  <input ...>
  <input ...>
  <input ...>
</div>

因此,基本上您是在尝试委派事件。要做到这一点,正如jQuery文档所说,您需要使用如下内容:

```

```


侦听正文中的事件可能太多,您可能希望侦听某些特定形式或元素中的“更改”事件。

因此,基本上您是在尝试委派事件。要做到这一点,正如jQuery文档所说,您需要使用如下内容:

```

```


侦听正文中的事件可能太多,您可能希望侦听某些特定表单或元素中的“更改”事件。

查看
delegate()
如何加载局部视图?是通过Ajax吗?是的。我想我们用下面的答案来解决这个问题。我认为如果你关心正确的方式,你应该考虑事件泡沫。如果元素总是添加到特定的容器中,那么最好基于特定的容器上下文编写委派,因为$(body)或$(document)会一直冒泡到…@KrishnaDhungana+1,这是一个有效点。谢谢。查看
delegate()
如何加载局部视图?是通过Ajax吗?是的。我想我们用下面的答案来解决这个问题。我认为如果你关心正确的方式,你应该考虑事件泡沫。如果元素总是添加到特定的容器中,那么最好基于特定的容器上下文编写委派,因为$(body)或$(document)会一直冒泡到…@KrishnaDhungana+1,这是一个有效点。谢谢你,谢谢你,真管用!我不知道这件事。我能接受两个相同的答案吗?你和matthias_h差不多在同一时间回答。谢谢你,这很有效!我不知道这件事。我能接受两个相同的答案吗?你和matthias_h差不多同时回答。