Jquery 仅当服务器没有活动类时才允许链接调用该服务器
我有一个多链接的HTML标签菜单 单击菜单项添加“活动”类,该类更改菜单项的外观和感觉。 菜单项中的数据删除=真,以便将链接轴化 我想做的是,当用户单击同一链接2次时,防止调用服务器 我的想法是说,如果菜单项有“active”类,那么就阻止对服务器的调用,否则就让它去吧 我做了一些尝试来防止违约、停止传播和返回false。。。但它并没有像预期的那样工作。 我得到的最好结果是将preventDefault和StopperPropagation结合在一起,但是控制器再也不能调用了Jquery 仅当服务器没有活动类时才允许链接调用该服务器,jquery,ajax,Jquery,Ajax,我有一个多链接的HTML标签菜单 单击菜单项添加“活动”类,该类更改菜单项的外观和感觉。 菜单项中的数据删除=真,以便将链接轴化 我想做的是,当用户单击同一链接2次时,防止调用服务器 我的想法是说,如果菜单项有“active”类,那么就阻止对服务器的调用,否则就让它去吧 我做了一些尝试来防止违约、停止传播和返回false。。。但它并没有像预期的那样工作。 我得到的最好结果是将preventDefault和StopperPropagation结合在一起,但是控制器再也不能调用了 单击具有“活动”C
单击具有“活动”CSS类的链接时,如何避免调用控制器?听起来您正在失去事件委派。由于该类被删除,事件也随之消失。尝试在dom树中使用关闭父级的选择器,该选择器不会丢失其id或更改类 范例
$("#wrapper").on("click", ".active", function(e){
e.preventDefault();
e.stopPropagation();
//other code you wanted handled.
});
这会将单击委托给父容器。然后,当活动类被删除时,如果事件被添加回来,它仍然可以工作
仔细阅读这篇文章问题在于,第一次点击第一个链接会触发一次点击,然后点击另一个链接会触发两次,以此类推 为了只执行一次我的代码,我在事件中添加了一个布尔值。 通过这个,我实现了一个“previous”类,它显示了单击的上一个菜单项 由于jQuery ujs正在使用.ajax处理data remote=true,因此我已经钩住了“beforeSend”事件,在这里我寻找的是“previous”类而不是“active”类 以下是我的代码Javascript代码:
$('a.list-group-item').bind('ajax:beforeSend', function(jqXHR, settings) {
if ($(jqXHR.target).hasClass('previous'))
return false;
});
$('a.list-group-item').on('click', function() {
if (event.handled !== true)
{
$('a.list-group-item.previous').removeClass('previous');
$('a.list-group-item.active').addClass('previous').removeClass('active');
$(this).addClass('active');
event.handled = true;
}
});
我认为逻辑最适合实际执行ajax抓取的函数,只需执行if$这个。hasClass“活动”{…在ajax函数前面。提供您已经得到的标记和jsfar@adeneo没有Javascript函数我提到的是我试图编写的一个函数,用于阻止ajax调用。由于Rails框架,将data remove=true添加到链接中发挥了神奇的作用。我注意到我忘记了Rails标记注:这不是e Rails框架提供了这一点,但jQuery ujs很好,preventDefault阻止了默认行为,它不会阻止javascript添加的其他事件处理程序,这是您通常无法做到的,或者至少不容易做到。但我认为我不能做到这一点,因为我需要用户单击管理类的a标记。如果我委托将事件委托给父级,链接不会被执行,对吗?我想JavaScription仍然有可能不正确。当您委托事件时,事件委托给父级,但会激发类。如果您同意我的答案,请您将其标记为正确。ty。我没有尝试过,我无法确认这是wo工作地点: