Я пытаюсь переключаться между div, чтобы при нажатии тега отображался div. Когда другой тег щелкнут, div заменит отображаемый div.JQuery Toggle Между несколькими divs
Это то, что я сделал.
HTML:
<a href="#" rel="#slidingDiv">a</a><br>
<a href="#" rel="#slidingDiv_2">b</a><br>
<a href="#" rel="#slidingDiv_3">c</a><br>
<a href="#" rel="#slidingDiv_4">d</a><br>
<div id="slidingDiv">a</div>
<div id="slidingDiv_2">a</div>
<div id="slidingDiv_3">a</div>
<div id="slidingDiv_4">a</div>
Jquery:
function ($) {
$.fn.showHide = function (options) {
//default vars for the plugin
var defaults = {
speed: 1000,
easing: '',
changeText: 0,
showText: 'Show',
hideText: 'Hide'
};
var options = $.extend(defaults, options);
$(this).click(function() {
var toggleDiv;
var $divA = $('#slidingDiv'),
$divB = $('#slidingDiv_2'),
$divC = $('#slidingDiv_3'),
$divD = $('#slidingDiv_4'),
$divE = $('#slidingDiv_5'),
$divF = $('#slidingDiv_6'),
$divG = $('#slidingDiv_7'),
$divH = $('#slidingDiv_8'),
$divI = $('#slidingDiv_9');
if($divA.is(':visible')){
$divA.hide();
}
if($divB.is(':visible')){
$divB.hide();
}
if($divC.is(':visible')){
$divC.hide();
}
if($divD.is(':visible')){
$divD.hide();
}
if($divE.is(':visible')){
$divE.hide();
}
if($divF.is(':visible')){
$divF.hide();
}
if($divG.is(':visible')){
$divG.hide();
}
if($divH.is(':visible')){
$divH.hide();
}
if($divI.is(':visible')){
$divI.hide();
}
// this reads the rel attribute of the button to determine which div id to toggle
toggleDiv = $(this).attr('rel');
$('.toggleDiv').slideUp(options.speed, options.easing);
// this var stores which button you've clicked
var toggleClick = $(this);
var toggleDiv = $(this).attr('rel');
// here we toggle show/hide the correct div at the right speed and using which easing effect
$(toggleDiv).slideToggle(options.speed, options.easing, function() {
// this only fires once the animation is completed
// if(options.changeText==0){
//$(toggleDiv).is(":visible") ? toggleClick.text(options.hideText) : toggleClick.text(options.showText);
//}
});
return false;
});
};
})(jQuery);
Это в настоящее время работает, но я знаю, что это может быть сделано лучше, вместо того, чтобы использовать, если заявление.
Благодаря
Вы также можете избавиться от всех пронумерованных идентификаторов и использовать индекс элемента + общий класс. Этот вопрос лучше подходит для http://codereview.stackexchange.com –
Используйте классы! Сэкономьте массу времени! http://stackoverflow.com/questions/2951556/show-hide-divs-with-same-class-jquery – tymeJV
Это моя точка ... Я хочу избавиться от операторов if. Я знаю, что есть лучший способ сделать это. Я искал через jsfiddle и нашел это: http://jsfiddle.net/karalamalar/62NPt/4/ Но для меня это не работает – Mark