<;a>;使用javascript:void(0)href在一次使用后不调用ajax查询

<;a>;使用javascript:void(0)href在一次使用后不调用ajax查询,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,我在页面上有此菜单项的下拉列表: <li><a onclick="return false" href="javascript:void(0)" class="change-state" data-id="@Model.Id" data-state="@ReportStatus.New">Mark as New</a></li> 当我打开我的页面时,点击这个,我通过ajax进行了更改,但如果我再次尝试点击它,一切都不起作用。我想这是因为我使用了j

我在页面上有此菜单项的下拉列表:

<li><a onclick="return false" href="javascript:void(0)" class="change-state" data-id="@Model.Id" data-state="@ReportStatus.New">Mark as New</a></li>

当我打开我的页面时,点击这个
,我通过ajax进行了更改,但如果我再次尝试点击它,一切都不起作用。我想这是因为我使用了
javascript:void(0)
,但如果没有这个,我的ajax将刷新所有页面,而不仅仅是元素。请帮助我解决这个问题。

从您的代码中,我假设您获得了一个容器的名称,然后替换其中包含锚定标记的html?如果是这样,那么单击事件将不会执行此操作,因为锚定标记将再次动态创建,并且不会注册以使用您的单击事件。您需要尝试将其作为事件处理程序

$('.change-state').on('click', function() {
   ....
});

碰巧的是,
是否包含在
'#报告编号-'+attr.id
中?也许您应该包含一个失败函数,以查看AJAX调用是否有任何抱怨。@Stryner是的,
包含在该函数中block@AlexeyMalyuk这就是问题所在。您将再次动态创建锚定标记。请参阅下面我的答案以了解解决方案。我尝试了这个方法,但效果不太好。是的,我的
包含在用ajax替换的元素中。刷新后是否存在class.change状态?您使用的是哪个版本的jquery?也许你可以试试.live()而不是.on()。我相信.live()在较新的版本中不受欢迎,但如果您使用的是较旧版本的jquery,则可能是.on()不起作用的原因。是的,在刷新类存在后,您的答案与OP的答案相同。你实际上没有使用
$('.change-state').on('click', function() {
   ....
});