2014-11-27 2 views
0

Я хотел бы объединить эти две функции, но я не могу понять это. (К сожалению, в процессе обучения ...)Объедините две функции jquery

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

Может кто-нибудь сказать мне, как это сделать?

Возможно ли это?

Большое значение!

ответ

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



}); 
+0

Большое спасибо! – MathCiet

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

... по крайней мере, я так думаю! :-)