我有一个id元素"删除" (在局部视图中)单击将从电影中删除producerId。当我点击它时,jquery函数没有响应,没有任何反应。请帮我看看这里出了什么问题。
这是我的视图html(_ProducerIndex.cshtml) -
@model MovieInfo.Models.Producer
@if (Model != null)
{
<table>
<tr>
<td>
@Html.DisplayFor(model => model.Name)
</td>
<td>
<div id="removeproducer" data-mi-producerId="@Model.ProducerId" data-mi-movieid="@ViewData["Movie"]">
<a href="#">Remove</a>
</div>
</td>
</tr>
</table>
}
这就是我的jquery正在做的事情 -
$(function () {
var removeProducer = function () {
var $a = $(this);
var prodId = $a.attr("data-mi-producerid");
var mov = $a.attr("data-mi-movieId");
var options = {
url: "/Movie/ProducerRemove",
contentType: "application/json",
data: JSON.stringify({ producerId: prodId, movie: mov }),
type: "post",
dataType: "html"
};
$.ajax(options).done(function (data) {
var $target = $("#producerindex");
$target.html(data);
});
return false;
};
$("#removeproducer").on("click", removeProducer);
});
我尝试在removeProducer函数中放置alert语句但是没有调用它。
答案 0 :(得分:4)
如果你的元素是通过ajax引入的,那就意味着你可以点击&#39;在文档上存在实际元素之前分配事件。你必须等到ajax完成后或做
之类的事情$('body').on('click', '#removeproducer', removeProducer);
代替。
以后一种方式执行此操作会将click事件绑定到正文,但只有在单击#removeproducer元素时才会作出反应,它将随时触发文档中找到的所有#removeproducer元素。
答案 1 :(得分:2)
问题是你在事件处理程序声明之后声明你的函数是一个变量,并且在那个例子中,变量还没有被声明,因此不可用于事件处理程序要解决此问题,只需将var removeProducer = function () {
切换为function removeProducer() {
此处information为何会发生这种情况
答案 2 :(得分:0)