Javascript jQuery.delegate不工作
下面的代码用于在页面加载时切换类,但在Ajax调用后不起作用 html[field\u map\u location]是一个Drupal令牌: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
<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一点也不“老派”