Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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
Javascript jQuery.delegate不工作_Javascript_Jquery_Drupal - Fatal编程技术网

Javascript jQuery.delegate不工作

Javascript jQuery.delegate不工作,javascript,jquery,drupal,Javascript,Jquery,Drupal,下面的代码用于在页面加载时切换类,但在Ajax调用后不起作用 html[field\u map\u location]是一个Drupal令牌: <div class="clearfix dir-map"> <a href="#" class="show">Map</a> <div id="slidingDiv" class="outside"> [field_map_location] </div> </div> java

下面的代码用于在页面加载时切换类,但在Ajax调用后不起作用

html[field\u map\u location]是一个Drupal令牌:

<div class="clearfix dir-map">
<a href="#" class="show">Map</a>
<div id="slidingDiv" class="outside">
[field_map_location]
</div>
</div>
javascript:

<script type="text/javascript">
 jQuery(function($) {
$(document).ready(function() {
    $('.dir-map').delegate('a', 'click', function(e) {
        e.preventDefault(); 
        $(this).next('div').toggleClass('outside inside');
    });
});

});
</script>
更新 我尝试了以下推荐的解决方案,但仍然不起作用

<script type="text/javascript">
 jQuery(function($) {
    $(document).delegate('.dir-map a', 'click', function (e) {
        e.preventDefault(); 
        $(this).next('div').toggleClass('outside inside');
    });
});
</script>

对不起,我是个傻瓜,所以我不知道如何向您展示AJAX调用的代码。我可以告诉你,这个html是Drupal视图的一部分,我正在使用它的AJAX功能;连接到Drupal自己的JS行为系统可能会有所帮助

(function($) {
  Drupal.behaviors.custom = {
    attach: function(context, settings) {
      $('.dir-map a', context).click(function (e) {
        e.preventDefault(); 
        $(this).next('div').toggleClass('outside inside');
      });
    }
  };
})(jQuery);

有点过时的事件附加是因为Drupal7仍然附带jQuery1.4.2;连接到Drupal自己的JS行为系统可能会有所帮助

(function($) {
  Drupal.behaviors.custom = {
    attach: function(context, settings) {
      $('.dir-map a', context).click(function (e) {
        e.preventDefault(); 
        $(this).next('div').toggleClass('outside inside');
      });
    }
  };
})(jQuery);

有点陈旧的事件附加是因为Drupal 7仍然附带jQuery 1.4.2。

显示使其无法工作的Ajax调用代码。这不是问题的答案,但没有必要使用jQueryfunction${$document.readyfunction{};-您只是在用就绪处理程序包装就绪处理程序。Ajax调用在哪里?它改变了什么?您确定.dir映射元素是稳定的且不变的吗?您可能需要使用更高级别的containerAt至少用于验证此$document.delegate'.dir map a',click',function e{可能在ajax调用中您正在覆盖.dir mapShow ajax调用代码,使其无法工作。这不是问题的答案,但没有必要使用jQueryfunction${$document.readyfunction{};};-您只是在用就绪处理程序包装一个就绪处理程序。Ajax调用在哪里?它会发生什么变化?您确定.dir映射元素是稳定的且不会变化吗?您可能需要使用更高级别的容器来验证此$document.delegate'.dir映射a',click',函数e{可能在ajax调用中,您正在覆盖.dir映射谢谢!您很正确。现在,我只需要学习如何为自己做到这一点。这将是非常宝贵的:查找Drupal.behaviors实用示例感谢链接。jQuery更新的代码是否会有问题?不应该是,以上所有内容都与最新版本兼容对于jQuery来说,这只是一个有点“老派”的问题。谢谢!你说得对。现在,我只需要学习如何为自己做到这一点。这将是非常宝贵的:寻找Drupal.Behavies实用示例感谢链接。jQuery更新的这段代码会有问题吗?不应该,所有这些都与最新版本的jQuery兼容,这是jus一点也不“老派”