2015-03-10 21 views
5

http://eusville.com/eusVote/1/baltimore-sushijquery slidedown i slideUp Wiggles dział

Kliknij przycisk "Dodaj komentarz/Rate" przycisku. Gdy pole komentarza zostanie zsunięte, strona przesuwa się. Jestem bardzo zaskoczony. Googled around, ale nie może znaleźć rozwiązania.

Dziwne jest problem w przeglądarce Chrome i Firefox. IE działa płynnie ...

DIV HTML to: ... przepraszam, jest tam wiele rzeczy do golenia. Po prostu zignoruj ​​znak @ ...

jQuery przesuwa ten element w górę iw dół.

Porady doceniane! TIA.

$(".buttonAddCommentRate").click(function() {  
 
    var crBox = $(this).closest('.answer-container').find('.answer-commentRateBox');  
 
    var buttonText = $(this).text(); 
 

 
    if (buttonText == 'Add comment/rate') { 
 
     crBox.slideDown(300); 
 
     $(this).text('Cancel comment/rate'); 
 
    } 
 
    else { 
 
     crBox.slideUp(300); 
 
     $(this).text('Add comment/rate'); 
 
    } 
 
});
.answer-comment{ 
 
    width:600px; 
 
     float: left; 
 
} 
 
.answer-textArea{ 
 
    width: 500px; 
 
    height: 180px;  
 
} 
 

 
.answer-commentRateBox{ 
 
    display:none; 
 
    overflow: hidden; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="answer-container"> 
 
      <div class="answer-main"> 
 
       <h4>@Model.ElementAt(i).Title</h4> 
 

 
       @Model.ElementAt(i).Detail<br /><br /> 
 

 
       <button class="buttonAddCommentRate" data-id="@Model.ElementAt(i).AnswerID">Add comment/rate</button>&nbsp;&nbsp;&nbsp;&nbsp; 
 
       <span class="span-buttonAddCommentRate">Log in to comment and/or rate</span> 
 
      </div> 
 

 
      <div class="answer-eusScore"> 
 
       eusScore (<span class="answer-count">@Model.ElementAt(i).Count</span>)<br /><br /> 
 
       <span class="span-answer-eusScore">@(Math.Round((decimal)(Model.ElementAt(i).RatingScore)))%</span> 
 
      </div> 
 
      <div class="answer-thankYou"> 
 
       Rating/comment posted 
 
      </div> 
 

 
      <br style="clear:both" /> 
 

 
      <div class="answer-commentRateBox"> 
 
       <br /> 
 
       <div class="answer-comment"> 
 
        <textarea class="answer-textArea" placeholder="Comment must be more than 5 words ..."></textarea> 
 
       </div> 
 

 
       <div class="answer-rateIt"> 
 
        <input data-id="@Model.ElementAt(i).AnswerID" type="number" class="rating" min=0 max=5 step=0.5 data-size="sm"><br /> 
 
        <br /><br /> 
 
        <button class="buttonSubmit" disabled data-id="@Model.ElementAt(i).AnswerID">Submit</button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button class="buttonCancel">Cancel</button><br /> 
 
        <span id="span-enable-message" style="font-size:smaller">(rate to enable)</span> 
 
       </div> 
 
       <br style="clear:both" /> 
 
      </div> 
 

 
      <div> 
 
       @*displays the comments using a partial view*@ 
 
       @{Html.RenderAction("Comments", "Topic", new { answerID = @Model.ElementAt(i).AnswerID });} 
 
      </div> 
 

 
     </div> 
 

 
     <hr />

+1

sprawiają, że ciało 'przepełnienie: ukryte' na slidedown i zmienić na' przepełnienie: auto' po slajdzie –

+0

dzięki amit, spróbuję, kiedy wrócę do domu dziś wieczorem. jedną rzecz, którą zauważam w pracy. chrome i firefox, jeśli trzymam CTRL i - klawisz (aby pomniejszyć), gdy dojdę do pewnego rozmiaru ekranu, ruch zniknie. Ale jeśli zwiększam/powiększam powyżej pewnego poziomu, wiggle powraca. BTW, IE znów świeci i nie ma problemu, niezależnie od rozmiaru ekranu/powiększenia. Czy później przeprowadzę więcej eksperymentów w domu. Dzięki ! – nanonerd

+0

Przepełnienie sugestii nie działa. w/w przypadku powiększania chromu, jeśli zmniejszam go do 75%, ruch wygasa. Powyżej 75%, to wiggle powraca ... myślę, że ma to coś wspólnego z wyświetlaniem: brak, gdy strona otwiera się i po przesunięciu, zmienia się na wyświetlanie: blok i jest poruszenie. Po slajdowaniu zmienia się z powrotem w ekran: brak i jest ruch. BTW, jeśli jeden komentarz jest otwarty, wtedy nie ma żadnych ruchów, gdy kliknięto inne przyciski komentarzy. – nanonerd

Odpowiedz

4

Kwestia jesteś doświadcza się dzieje, ponieważ strona dostaje większą wysokość niż rzutni. Oznacza to, że pojawi się pasek przewijania.

Dodaj to do swojej css i będzie prawdopodobnie rozwiązać Twój problem

html { 
    overflow-y: scroll; 
} 
+0

to jest poprawka, której potrzebowałem. dzięki @ j08691 za wskazanie przyczyny i podziękowania dla Kay za poprawkę kodu. spowoduje to automatyczne umieszczenie prawego przewijania strony, nawet jeśli strona początkowo nie jest wystarczająco wysoka. więc nie ma już żadnych ruchów, ponieważ pasek przewijania pojawia się, gdy strona staje się dłuższa, ponieważ pasek przewijania już istnieje, aby rozpocząć. – nanonerd

+0

To działa, ale myślę, że pokazywanie go przez cały czas jest denerwujące. Jeśli jest oczywiste, że zawartość przewija się, możesz ukryć ją cały czas. Zaktualizowałem swoją odpowiedź za pomocą CSS. –

-2

Usuń argument ze swoimi slideDown() i slideUp() funkcji:

crBox.slideDown(); 
... 

crBox.slideUp(); 
+0

Argumentem jest szybkość animacji, a usunięcie go nie powinno rozwiązać problemu. –

+0

To zadziałało dla tego samego problemu, który miałem, ale do tego powinieneś zobaczyć poprzednią odpowiedź. – TricksfortheWeb

2

Pasek przewijania naciska stronę na trochę . Dwa rozwiązania to zawsze możesz pokazać pasek przewijania lub zawsze możesz go ukryć.

Zawsze pokazuj go:

body{ 
    overflow: scroll; 
} 

Zawsze ją ukryć:

::-webkit-scrollbar { 
    display: none; 
} 

Jeśli masz zamiar zawsze ukryć Chciałbym również dodać „Zawsze pokazuj go” kod. Powodem jest kod "ukryj" z zastąpieniem "pokaż to" i jeśli twoja przeglądarka nie obsługuje kodu "pokaż to", daje to rodzaj zastępstwa.

+0

Szukam rozwiązania IE. Opublikuję go, gdy wiem, że działa. O ile mi wiadomo, nie ma sposobu, aby ukryć go w Firefoksie (kiedyś był to sposób, który został usunięty). –