1

好的,所以我很难隐藏一些布局部分(我的布局页面中的 div 和我使用 mvc3)。

我有这个 js 片段,它基本上是主要逻辑:

$('.contentExpand').bind('click', function () {
            $.cookie('right_container_visible', "false");
        });

        //Cookies Functions========================================================
        //Cookie for showing the right container
        if ($.cookie('right_container_visible') === 'false') {
            if ($('#RightContainer:visible')) {
                $('#RightContainer').hide();
            }
            $.cookie('right_container_visible', null);
        } else {
            if ($('#RightContainer:hidden')) {
                $('#RightContainer').show();
            }
        }

如您所见,每当我点击某些具有特定 CSS 的链接时,我都会隐藏容器。这似乎适用于简单的测试。但是当我开始测试它时

.contentExpand click --> detail button click --> .contentExpand click --> [这里出现意外问题: $.cookie('right_container_visible', null); 已读取,但它没有将值设置为 null,就好像它忽略它一样]

我试图了解实现这一点的正确逻辑。任何人都知道我该如何解决这个问题?

4

2 回答 2

0

最简单的解决方案是在绑定委托之外创建变量。例如:

var rightContVisibility = $.cookie('right_container_visible');
$('.contentExpand').bind('click', function () {
             $.cookie('right_container_visible', "false");
             rightContVisibility = "false";
        });

if (rightContVisibility === 'false') {
...
}
于 2012-05-08T20:25:51.543 回答
0

对我来说最好的事情是创建一个可以捕捉元素大小的事件。我从另一个帖子中得到这个,但我不记得是哪一个。无论如何,这里是事件的代码:

//Event to catch rezising============================================================================
(function () {
var interval;
jQuery.event.special.contentchange = {
    setup: function () {
        var self = this,
        $this = $(this),
        $originalContent = $this.text();
        interval = setInterval(function () {
            if ($originalContent != $this.text()) {
                $originalContent = $this.text();
                jQuery.event.handle.call(self, { type: 'contentchange' });
            }
        }, 100);
    },
    teardown: function () {
        clearInterval(interval);
    }
};
})();
//=========================================================================================

//Function  to resize the right container============================================================
(function ($) {
$.fn.fixRightContainer = function () {

    this.each(function () {

        var width = $(this).width();
        var parentWidth = $(this).offsetParent().width();
        var percent = Math.round(100 * width / parentWidth);
        if (percent > 62) {
            $('#RightContainer').remove();
        }
    });
};
})(jQuery);
//===================================================================================================
于 2012-06-28T23:15:04.543 回答