结合jquery的两个函数

时间:2014-11-27 16:39:17

标签: 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();
    $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();    
  }); 
});

有人能告诉我怎么做吗?

有可能吗?

非常感谢!

2 个答案:

答案 0 :(得分:0)

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

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();    
  }); 



});

答案 1 :(得分:0)

通过提取常用功能开始:

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

(我知道它还不太对劲) 然后你可以这样做:

 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();
 };

然后调用正确的函数:

 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); }));

......至少我是这么认为的! : - )