2010-10-31 17 views
9

iki div'leri geçiş yapmak için en iyi yol budur.i bir sayfada iki div'leri yükleme ediyorum aynı bölgede

Ben göster "viewB" diyen bir bağlantı var. Bunu tıkladığımda, divA'nın ve divA'nın gizleneceği yeri göstermek için div B'yi istiyorum.

i sonra bağlantı göster "viewA"

jquery Bunu yapmanın en zarif yolu nedir değiştirmek istediğiniz? Yukarıdaki cevaplar vermezseniz

$("#link").toggle(function() { 
    toggleDivs(); 
    $(this).html("Show viewA"); 
}, function() { 
    toggleDivs(); 
    $(this).html("Show viewB"); 
}); 

function toggleDivs() { 
    $("#divA, #divB").toggle(); 
} 
+0

@bemace: Neden jquery-ui-tabs etiketi? OP, iki öğenin görünürlüğünü değiştirmek için bir * tek * bağlantıya ihtiyaç duyduğundan, tanım gereği jquery-ui-tab'ları dışlar. –

+0

@Freek - haklı olduğunuzu tahmin edin. Geri döndü –

cevap

10

: Böyle bir şey deneyin, çok zor değil

1

İstediğiniz etkiyi,kullanmayı deneyebilirsiniz Bunun yerineusulü (yani, target.replaceWith(newContent)). Adından da anlaşılacağı gibi, , newContent ile değiştirilecektir. En iyi yanı, bunun yerinde yapacağıdır.

divA.replaceWith(divB); 
... 
divB.replaceWith(divA); 
+1

Bu çözüm basit, ama zarif mi? –

0
var divA = $("#divA"); 
var divB = $("#divB"); 
var originalState = true; 

$("#toggler").click(function(e) { 
    originalState = !originalState; 
    if (originalState) { 
     divB.hide(); 
     divA.show(); 
    } else { 
     divA.hide(); 
     divB.show(); 
    } 
    $(this).html(originalState ? "Show viewB" : "Show viewA"); 
    e.preventDefault(); // Assuming you're using an anchor and "#" for the href 
}); 
+0

hata mantığı ~ originalState true olduğunda, divA.show() ve divB.hide(). – dz1984

+0

Evet, hepsi berbattı, düzeltildi. – George

0

: toggle() fonksiyonu kullanarak

var $divA = $('#a'), 
    $divB = $('#b'), 
    $link = $('#link'); 

// Initialize everything 
$link.text('Show A'); 
$divA.hide(); 

$link.click(function(){ 

    // If A is visible when the link is clicked 
    // you need to hide A and show B 
    if($divA.is(':visible')){ 
    $link.text('Show A'); 
    $divA.hide(); 
    $divB.show(); 
    } else { 
    $link.text('Show B'); 
    $divA.show(); 
    $divB.hide(); 
    } 

    return false; 
}); 

Example on jsFiddle

4

Çok basit.

Örnek:

$("#link").click(function() { 
    $("div[id^=tog_]").toggle(); 
    $(this).text("Show " + $("div[id^=tog_]").not(":visible").attr("id").substr(4)); 
}); 

JSFiddle üzerine bakınız:http://jsfiddle.net/Zmsnd/

$('#toggle').click(function() { 
    $('#container > .toggleMe').toggle(); 
    $(this).text(function(i,txt) { return txt === "Show viewB" ? "Show viewA" : "Show viewB"; }); 
}); 
0

İşte bunun üzerine almak benim.

Bu yardımcı olur umarım.

3

Bu Bunun benim orijinal cevap daha şık olduğunu düşünüyorum bu benim ikinci denemede:

$("#link").click(function(e) { 
    e.preventDefault(); 
    $("#divA, #divB").toggle(); 
    $(this).text(function(i, text) { return (text == "Show viewA") ? "Show viewB" : "Show viewA" }); 
}); 
+0

Bu bir yanlıştır. .click() işlevli işleyicinin içinde, bağlantıyı her tıkladığınızda * ek tıklama etkinliklerini atayacaksınız. – user113716

+0

Haklısınız, "click" etkinliğinin içinde, "toggle" kullanılamıyor. Şimdi güncellendi. – PeterWong

+0

Şimdi cevabımla aynı. – user113716

İlgili konular