2012-04-09 3 views
1

ok, поэтому им трудно спрятать некоторые разделы макета (divs на моей странице макета и im, используя mvc3).хэширующие элементы в макете страницы 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(); 
      } 
     } 

как вы можете видеть, им Hidding контейнер каждый раз, когда я нажимаю на некоторые ссылки, которые имеют определенную CSS. Кажется, что это нормально для простых тестов. Но когда я начинаю тестировать его, как

.contentExpand click -> click button -> .contentExpand click -> [здесь неожиданная проблема: строка $ .cookie ('right_container_visible', null); считывается, но он не устанавливает значение vaule как null, как если бы оно игнорировало его]

Im пытается понять, что правильная логика для реализации этого. Кто-нибудь знает, как я могу это решить?

ответ

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); 
//=================================================================================================== 
0

Самое простое решение - создать переменную вне делегата bind. Например:

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

if (rightContVisibility === 'false') { 
... 
}