通过Ajax更改jQuery中的链接
我正在使用jquery绑定链接上的一些单击事件。使用下面的代码,我已经能够通过ajax更改链接的href-但是当href更改并且我尝试单击链接时,什么也没有发生 想知道是否有人能发现我遗漏的明显错误通过Ajax更改jQuery中的链接,jquery,ajax,Jquery,Ajax,我正在使用jquery绑定链接上的一些单击事件。使用下面的代码,我已经能够通过ajax更改链接的href-但是当href更改并且我尝试单击链接时,什么也没有发生 想知道是否有人能发现我遗漏的明显错误 $('a.shortlist_action').bind('click',function(){ item = $(this); href = item.attr('href'); parent = $(this).parent('.sho
$('a.shortlist_action').bind('click',function(){
item = $(this);
href = item.attr('href');
parent = $(this).parent('.shortlist_action_container');
item = $(this);
$.ajax({
url: $(this).attr('href'),
success: function(data) {
item.addClass('largeviewplannerbutton');
item.attr("href", '/myaccount/planner');
}
}
});
// stop event propagation here
return false;
});
谢谢。删除
返回false
,正如您的评论所示,这会阻止事件传播
有关更多详细信息,请参阅。删除
返回false
,正如您的评论所示,这会阻止事件传播
// stop event propagation here
return false;
有关更多详细信息,请参阅
// stop event propagation here
return false;
return false
防止传播和默认行为。后者在
元素的超链接后面。实际上,您应该只在此处调用e.stopPropagation()
(并在函数签名中定义e
)
return false
防止传播和默认行为。后者在
元素的超链接后面。实际上,您应该只在此处调用e.stopPropagation()
(并在函数签名中定义e
。如前所述,jQuery事件处理程序中的返回false
会阻止该事件的默认行为,当然,单击链接的默认行为是导航到链接的href
中的URL
因此,对于当前代码,每次单击都会对当前href
中的URL进行Ajax调用,而没有默认导航。也就是说,第一次单击元素会对原始URL进行Ajax调用,然后更改URL。没有默认导航。然后,第二次单击会对新URL进行Ajax调用,但同样没有默认的导航
如果您的想法是只需第一次单击即可执行Ajax并更新href
,第二次和后续单击将只执行到新URL的标准导航,那么您应该使用而不是.bind()
。.one()
方法绑定每个元素只运行一次的事件处理程序
或者,您需要在函数中添加一些附加逻辑,以决定是否更改
href
,以及是否返回false
以取消默认的单击行为。和/或可能添加对.off()
(或.unbind()
)的调用,以在特定链接不再需要单击处理程序时删除该处理程序。如前所述,jQuery事件处理程序中的返回false
会阻止该事件的默认行为,当然,单击链接的默认行为是导航到链接的href
中的URL
因此,对于当前代码,每次单击都会对当前href
中的URL进行Ajax调用,而没有默认导航。也就是说,第一次单击元素会对原始URL进行Ajax调用,然后更改URL。没有默认导航。然后,第二次单击会对新URL进行Ajax调用,但同样没有默认的导航
如果您的想法是只需第一次单击即可执行Ajax并更新href
,第二次和后续单击将只执行到新URL的标准导航,那么您应该使用而不是.bind()
。.one()
方法绑定每个元素只运行一次的事件处理程序
或者,您需要在函数中添加一些附加逻辑,以决定是否更改
href
,以及是否返回false
以取消默认的单击行为。和/或可能添加对.off()
(或.unbind()
)的调用,以便在特定链接不再需要单击处理程序时删除它。不是答案,只是一些注释。你有item=$(这个)
两次,您可能希望使用url:href
而不是url:$(this).attr(href)
。第一次单击链接将执行Ajax并更改href,然后第二次和后续单击将实际导航到新url,而无需进一步Ajax?这对用户来说不是有点困惑吗?嗨,人们会点击链接将项目添加到一个类似书签的列表中。一旦他们点击了链接,按钮就会变成“查看列表”按钮。不是答案,只是一些注释。你有item=$(这个)
两次,您可能希望使用url:href
而不是url:$(this).attr(href)
。第一次单击链接将执行Ajax并更改href,然后第二次和后续单击将实际导航到新url,而无需进一步Ajax?这对用户来说不是有点困惑吗?嗨,人们会点击链接将项目添加到一个类似书签的列表中。单击链接后,按钮将变为“查看列表”按钮。