我試圖在div之間切換,以便在單擊某個標籤時div會顯示。 當另一個標籤被點擊時,div將替換顯示的div。JQuery在多個div之間切換
這就是我所做的。
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);
目前這工作,但我知道,這是可以做的更好,而不是使用if語句。
感謝
你也可以擺脫所有這些編號的ID,並使用元素的索引+一個普通的類。這個問題會更適合http://codereview.stackexchange.com – 2013-04-23 14:45:54
使用類!節省您噸的時間! http://stackoverflow.com/questions/2951556/show-hide-divs-with-same-class-jquery – tymeJV 2013-04-23 14:46:22
這就是我的觀點......我想擺脫如果陳述。我知道有這樣做的最好方法..我正在通過jsfiddle搜索,發現這個:http://jsfiddle.net/karalamalar/62NPt/4/ 但對我來說它不起作用 – Mark 2013-04-23 14:51:56