使用 Jquery 显示隐藏 DIV



我有一个简单的JQuery显示/隐藏功能,可以明显地显示和隐藏div。有三件事我自己做不到。

<script type="text/javascript">
  $(document).ready(function() {
  $('#showHideBox').show();
  $('#showHidetoggle').click(function() {
  $("#showHidetoggle").text("Show me")
    $('#showHideBox').slideToggle(250);
    return false;
  });
});
</script>
<a href="#" id="showHidetoggle">Hide Me</a>
  1. 我正在寻找一种方法来更改锚标签上的文本以显示/隐藏。我知道以前已经问过很多次了。但是我似乎找不到我的脚本的具体示例,到目前为止,文本在单击时会更改,但后续单击时不会更改。

  2. 该脚本通过将div 滑出视图来隐藏div,但是,我需要div 上可见的一部分,这样我就可以附加用户将单击的按钮(锚)标签。

  3. 最后,当用户单击隐藏时,div 会滑出视图,仅在用户刷新页面时重新出现。 如何使div 保持隐藏状态,但仅在用户单击按钮时才显示?

我正在尝试完成的一个例子是在此页面上可以在 constantcontact.com 上找到。查看页脚,您会看到它滑出视图,但按钮仍然可见。

任何帮助将不胜感激。

谢谢大家。

因此,要实现此目的,最简单的方法(imo)是为按钮+框(要隐藏)创建一个容器。 您的按钮将始终保持不变。 当页面加载时,我们会将一个事件附加到您的按钮上,该事件将根据框的当前状态显示和隐藏您的框(如果它被隐藏,则显示它,如果它可见,则隐藏它)。

足够简单。

现在,您还希望在页面加载/页面访问之间保持可见/隐藏状态。 为此,您将需要在用户的浏览器上安装一个cookie(旁注,如果您的用户已登录或其他方式,则可以以另一种方式执行此操作 - 但是cookie是最轻松的方式完成它,并且不涉及服务器往返将数据保存到数据库中)。

为了做到这一点,我建议去获取jQuery Cookie插件,它使用起来非常简单(如下所述),并且消除了处理cookie的很多麻烦。 每次用户单击您的按钮并更改框的状态时,您都会向用户的浏览器写入一个 cookie 并存储框的当前状态。 这样,当用户重新加载页面时,您将知道当前状态是什么(因为cookie)。 在下面的示例中,我将 cookie 设置为一年后过期,但您可以根据需要进行更改。

<div id="ShowHideContainer">
    <p><a id="ShowHideButton">Click Here To Hide!</a></p>
    <div id="ShowHideBox">text that gets shown and hidden, woo</div>
</div>
<script>
$(document).ready(function()
{
    var $ShowHideBox = $('#ShowHideBox').hide(),
        $ShowHideButton = $('#ShowHideButton');
    /* Initialize the box based on the state of the cookie in the user's browser*/
    initBox();
    $('#ShowHideButton').click(function() {
        if (boxVisible())
        {
            //the box is visible. lets hide it.
            hideBox();
        }
        else
        {
            //the box is invisible. show it.
            showBox();
        }
    });
    function initBox()
    {
        //if the cookie says this is visible, and it's not...show it
        if ( $.cookie('BoxVisible') && ! boxVisible() )
        {
            showBox();
        }
        //if the cookie says this is not visible, and it is...hide it
        else if ( ! $.cookie('BoxVisible') && boxVisible() )
        {
            hideBox();
        }
    }  
    //check to see if the box is visible or not, currently
    function boxVisible()
    {
        return $ShowHideBox.hasClass('hidden')? false : true;
    }
    //show the box, change the button text, and set the cookie
    function showBox()
    {
        $ShowHideBox.slideUp(250).removeClass('hidden');
        $ShowHideButton.html("Click Here to Hide!");
        $.cookie('BoxVisible', 1, {expires: 365});
    }
    //hide the box, change the button text, and set the cookie
    function hideBox()
    {
        $ShowHideBox.slideDown(250).addClass('hidden');
        $ShowHideButton.html("Click Here to Show!");
        $.cookie('BoxVisible', 0, {expires: 365});
    }
});
</script>
  1. 我更改了以下幻灯片效果教程中的代码以替代隐藏并显示 JQuery 单击事件上的锚标记。

    下面的代码工作示例可以在这个JSFiddle中看到:

    $(document).ready(function () {
        $("#hide").click(function () {
            $(".target").hide("slide", {
                direction: "up"
            }, 500);
            $('#show').show();
            $('#hide').hide();
        });
        $("#show").click(function () {
            $(".target").show("slide", {
             direction: "up"
            }, 500);
            $('#show').hide();
            $('#hide').show();
        });
    
        if ($('.target').is(':visible')) {
        }
    });
    
$('#showHidetoggle').click(function() {  
    var boxText = $('#showHideBox').is(":visible") ? "Show me" : "Hide me";
    $("#showHidetoggle").text(boxText);
    $('#showHideBox').slideToggle(250);
    return false;
});

若要保存状态,需要使用服务器端代码或使用 cookie。

$(document).ready(function() {
    $('#showHideBox').show();
    $('#showHidetoggle:not(.hideme)').click(function() {
        $(this).html("Hide me").addClass("hideme");
        $('#showHideBox').animate({height: '100px'}, 250); // Or whatever height you want
        return false;
    });
    $('#showHidetoggle.hideme').click(function() {
        $(this).html("Show me").removeClass("hideme");
        $('#showHideBox').animate({height: '300px'}, 250); // Or whatever height it was orginally.
        return false;
    });
});

应该做这个伎俩。

  1. 您可以使用if ($('#showHideBox').is(':visible') == True) {/*change text*/} else {/*change text*/}根据需要更改文本以显示/隐藏。
  2. 您需要将显示/隐藏按钮放在要隐藏的框之外。
  3. 您可以使用 Cookie 或会话或本地存储来存储需要在页面加载后保留的信息。您需要将框的初始状态设置为页面加载时显示/隐藏。

如何使用 Jquery 和 java 脚本隐藏和显示标签

<script>
 $(document).ready(function () {
     $("#purchase_order").click(function () {
         $(".salep").hide();
         $(".saleo").show();
         $("#purchase_order").hide();
         $("#sale_order").show();
  }); 
</script>

相关内容

  • 没有找到相关文章

最新更新