jQuery .delegate无法正常工作

时间:2013-05-08 16:30:56

标签: javascript jquery drupal

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

html([field_map_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>

抱歉,我是noobie,所以我不知道如何向你展示AJAX通话的代码。我可以告诉你,这个html是Drupal视图的一部分,我正在使用它的AJAX功能。

1 个答案:

答案 0 :(得分:1)

Drupal有时可能很有趣;连接到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。