2013-02-09 1 views
0

Я пытаюсь создать кнопку, которая скроет конкретную, а затем заменит ее на другую. Однако, когда я тестирую код, все срабатывает корректно, за исключением .removeClass, который содержит «display: none»..removeClass не работает в пределах .replaceWith

Вот код:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     var webform = document.getElementById('block-webform-client-block-18'); 
     var unmarriedbutton = document.getElementById('unmarried'); 
     var buyingblock = document.getElementById('block-block-10'); 

     $(unmarriedbutton).click(function() { 
      $(buyingblock).fadeOut('slow', function() { 
       $(this).replaceWith(function() { 
        $(webform).removeClass('hiddenbox') 
       }); 
      }); 
     }); 
    }); 
    </script> 

CSS-на 'hiddenbox' не более чем «дисплей: доли не имеет.

Существует с id незамужних, который при нажатии исчезает div и заменяет его на скрытый div, который удаляет класс, чтобы открыть его. Однако последняя часть не срабатывает - все остальное делает и . исправно Когда я смотрю на в консоли тоже, он не показывает никаких ошибок

может кто-то пожалуйста, скажите мне, где ошибка Спасибо

Edit:.?! Я могу использовать неправильную функцию, чтобы заменить DIV с, так вот вот сайт: http://drjohncurtis.com/happily-un-married. Если вы нажмете кнопку «загрузить книгу», div исчезнет и будет правильно заменен блоком div # block-webform-client-block-18. Однако он остается скрытым.

+0

Просто из curiosity..does это работает если вы добавите ';' после этой строки? –

+0

@AlexW почему ты подозреваешь? –

+0

@iliacholy http://stackoverflow.com/questions/444080/do-you-recommend-using-semicolons-after-every-statement-in-javascript –

ответ

-2

NB, используйте jquery!

var webform = $('#block-webform-client-block-18'); 
    var unmarriedbutton = $('#unmarried'); 
    var buyingblock =$('#block-block-10'); 
    unmarriedbutton.click(function() { 
     buyingblock.fadeOut('slow', function() { 
      $(this).replaceWith(webform.removeClass('hiddenbox')); 

     }); 
    }); 

Было слишком быстро, я считаю, что это так, как вы выберите объект (getelementbyid), то вы создаете объект JQuery из него ... -> Использование JQuery API

+0

'replaceWith () 'ничего не делает, если вы передадите ему функцию и ничего не возвращаете из функции. – jfriend00

+0

Я использовал это точно, и весь документ не удался. Он не признает ни одного из селекторов. – Darthfuzzy

+0

@ Darthfuzzy завернутый в doc.ready? ошибка консоли? – mikakun

1

Функция вы передаете в ReplaceWith имеет для возврата содержимого, которое вы хотите заменить. Вы должны фактически вернуть контент.

Я не знаю точно, что вы пытаетесь достичь, но вы могли бы использовать это, если цель состоит в том, чтобы заменить его на WebForm объекта:

$(this).replaceWith(function() { 
     return($(webform).removeClass('hiddenbox')); 
}); 
+0

Может быть, я использую неправильную функцию, но вот фактический сайт: http://drjohncurtis.com/happily-un-married. Если вы нажмете «ЗАГРУЗИТЬ КНИГУ!» он должен возвращать a с блоком div # block-webform-client-block-18, и он это делает, он просто остается скрытым (и это после того, как я использовал ваше решение). – Darthfuzzy

+0

Я сделал изменение на сайте с возвратом, и он все еще не работает - он по-прежнему остается пустым. – Darthfuzzy

+0

это '$ (document.getElementById ('block-webform-client-block-18')', что создает ошибку – mikakun