在提出建议之后,我提出了一个更有针对性的问题,我有这个问题。
目前我有这段代码
omShortcodes.modules.toggle = {
init: function() {
jQuery('.omsc-accordion .omsc-toggle').addClass('omsc-in-accordion').find('.omsc-toggle-title').click(function(){
var $toggle=jQuery(this).parent();
if($toggle.hasClass('omsc-expanded')) {
$toggle.removeClass('omsc-expanded');
$toggle.find('.omsc-toggle-inner').slideUp(300);
return false;
}
var $acc=$toggle.parents('.omsc-accordion');
if(!$acc.hasClass('omsc-multiopen'))
$acc.find('.omsc-toggle.omsc-expanded').removeClass('omsc-expanded').find('.omsc-toggle-inner').slideUp(300);
$toggle.find('.omsc-toggle-inner').slideDown(300,function(){
var h=jQuery(this).parent().height();
var pos=jQuery(this).parent().find('.omsc-toggle-title').offset();
var scroll=jQuery(window).scrollTop();
var wh=jQuery(window).height();
if(pos.top < scroll || (pos.top > scroll && pos.top+h > scroll+wh))
jQuery('html,body').animate({ scrollTop: pos.top+'px' }, 200);
}).find('iframe[src*="maps.google"]').each(function(){
jQuery(this).attr('src',jQuery(this).attr('src'));
});
$toggle.addClass('omsc-expanded');
});
jQuery('.omsc-toggle').not('.in-accordion').find('.omsc-toggle-title').click(function(){
var $toggle=jQuery(this).parent();
var $inner=$toggle.find('.omsc-toggle-inner');
if(!$inner.length)
return false;
if($inner.is(':animated'))
return false;
$toggle.toggleClass('omsc-expanded');
$inner.slideToggle(300);
if($toggle.hasClass('omsc-expanded')) {
$inner.find('iframe[src*="maps.google"]').each(function(){
jQuery(this).attr('src',jQuery(this).attr('src'));
});
}
return false;
});
}
}
但只有在直接加载页面时,它才能与AJAX一起使用。
我已被建议使用(&#39;点击&#39;)而不是点击。
我试过了
jQuery('.omsc-accordion .omsc-toggle').addClass('omsc-in-accordion').find('.omsc-toggle-title').on('click', '.omsc-accordion', function(){
jQuery('.omsc-accordion .omsc-toggle').addClass('omsc-in-accordion').find('.omsc-toggle-title').on('click', 'omsc-accordion', function(){
jQuery('.omsc-accordion .omsc-toggle').addClass('omsc-in-accordion').find('.omsc-toggle-title').on('click', '.omsc-accordion .omsc-toggle', function(){
但这三个人都没有做任何事情。我是否错误地实施了这个?
答案 0 :(得分:1)
jQuery('.omsc-toggle').not('.in-accordion').find('.omsc-toggle-title').click
只会将点击处理程序附加到页面加载时存在的事件。要将处理程序附加到将来的元素,请使用on
的委派功能。
jQuery('#container').on('click', '.omsc-toggle:not(.in-accordion) .omsc-toggle-title', function() {
console.log('clicked!');
});
其中#container
是包含所有.omsc-toggle
元素的元素。建议不要将事件处理程序附加到$(document)
。