组合jquery的两个功能

组合jquery的两个功能,jquery,toggle,slideup,Jquery,Toggle,Slideup,我想把这两个功能结合起来,但我想不出来。对不起,正在学习中 jQuery(document).ready(function($) { var $mores = $('#widget-about .textwidget').hide(); var $titles = $('#widget-about a').click(function() { var $more = $(this).next('#widget-about .textwidget').slideToggle()

我想把这两个功能结合起来,但我想不出来。对不起,正在学习中

jQuery(document).ready(function($) {

  var $mores = $('#widget-about .textwidget').hide();

  var $titles = $('#widget-about a').click(function() {
    var $more = $(this).next('#widget-about .textwidget').slideToggle();
    $mores.not($more).slideUp();    
  }); 
});

jQuery(document).ready(function($) {

  var $mores = $('#widget-contact .textwidget').hide();

  var $titles = $('#widget-contact a').click(function() {
    var $more = $(this).next('#widget-contact .textwidget').slideToggle();
    $mores.not($more).slideUp();    
  }); 
});
谁能告诉我怎么做

可能吗


非常感谢

您的变量名称相同。让这个唯一的名字,然后它就会工作。试试这个代码

jQuery(document).ready(function($) {

  var $mores = $('#widget-about .textwidget').hide();
  var $titles = $('#widget-about a').click(function() {
  var $more = $(this).next('#widget-about .textwidget').slideToggle();
  $mores.not($more).slideUp();    
  }); 



 var $mores_contact = $('#widget-contact .textwidget').hide();
 var $titles_contact = $('#widget-contact a').click(function() {
 var $mores_contact = $(this).next('#widget-contact .textwidget').slideToggle();
 $mores_contact.not($mores_contact).slideUp();    
  }); 



});

从提取公共函数开始:

 function() {
   var $more = $(this).next('#widget-about .textwidget').slideToggle();
   $mores.not($more).slideUp();    
 }
 var selector, $mores;

 selector = '#widget-about .textwidget',
 $mores = $(selector).hide();
 $('#widget-about a').click((function() { myhandler(selector, $mores); }));

 selector = '#widget-contact .textwidget';
 $mores = $(selector).hide();
 $('#widget-contact a').click((function() { myhandler(selector, $mores); }));
我知道现在还不太对劲 然后你可以做:

 var myhandler = function() {
   var $more = $(this).next('#widget-about .textwidget').slideToggle();
   $mores.not($more).slideUp();    
 };
 var $mores = $('#widget-about .textwidget').hide();
 $('#widget-about a').click(myhandler);
 var $mores = $('#widget-contact .textwidget').hide();
 $('#widget-contact a').click(myhandler);
整理myhandler中的内部引用:

 var myhandler = function(selector, $mores) {
   var $more = $(this).next(selector).slideToggle();
   $mores.not($more).slideUp();
 };
然后调用正确的函数:

 function() {
   var $more = $(this).next('#widget-about .textwidget').slideToggle();
   $mores.not($more).slideUp();    
 }
 var selector, $mores;

 selector = '#widget-about .textwidget',
 $mores = $(selector).hide();
 $('#widget-about a').click((function() { myhandler(selector, $mores); }));

 selector = '#widget-contact .textwidget';
 $mores = $(selector).hide();
 $('#widget-contact a').click((function() { myhandler(selector, $mores); }));
。。。至少我这么认为! :-