在同一区域切换两个div的最佳方法是什么

时间:2010-10-31 16:19:09

标签: jquery html

我在页面中加载了两个div:divA和divB

我有divB显示样式=无。

我有一个显示“Show viewB”的链接。当我点击这个时,我希望div B显示divA的位置和divA隐藏。

我希望链接更改为“Show viewA”

在jquery中这样做最优雅的方式是什么?

7 个答案:

答案 0 :(得分:10)

使用toggle()函数:

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

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

答案 1 :(得分:4)

很简单。

示例: http://jsfiddle.net/Zmsnd/

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

答案 2 :(得分:3)

这是我的第二次尝试,我认为这比我原来的答案更优雅:

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

答案 3 :(得分:1)

这不是很难,尝试这样的事情:

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

答案 5 :(得分:0)

如果上述答案没有达到您想要的效果,您可能需要尝试使用replaceWith方法(即target.replaceWith(newContent))。顾名思义,它会将target替换为newContent。最好的部分是它将就地进行。

divA.replaceWith(divB);
...
divB.replaceWith(divA);

答案 6 :(得分:0)

这是我的看法:

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

JSFiddle上查看。

希望这有帮助。