Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 仅当服务器没有活动类时才允许链接调用该服务器_Jquery_Ajax - Fatal编程技术网

Jquery 仅当服务器没有活动类时才允许链接调用该服务器

Jquery 仅当服务器没有活动类时才允许链接调用该服务器,jquery,ajax,Jquery,Ajax,我有一个多链接的HTML标签菜单 单击菜单项添加“活动”类,该类更改菜单项的外观和感觉。 菜单项中的数据删除=真,以便将链接轴化 我想做的是,当用户单击同一链接2次时,防止调用服务器 我的想法是说,如果菜单项有“active”类,那么就阻止对服务器的调用,否则就让它去吧 我做了一些尝试来防止违约、停止传播和返回false。。。但它并没有像预期的那样工作。 我得到的最好结果是将preventDefault和StopperPropagation结合在一起,但是控制器再也不能调用了 单击具有“活动”C

我有一个多链接的HTML标签菜单

单击菜单项添加“活动”类,该类更改菜单项的外观和感觉。 菜单项中的数据删除=真,以便将链接轴化

我想做的是,当用户单击同一链接2次时,防止调用服务器

我的想法是说,如果菜单项有“active”类,那么就阻止对服务器的调用,否则就让它去吧

我做了一些尝试来防止违约、停止传播和返回false。。。但它并没有像预期的那样工作。 我得到的最好结果是将preventDefault和StopperPropagation结合在一起,但是控制器再也不能调用了


单击具有“活动”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工作地点: