.removeClass在.replaceWith中无法正常工作

时间:2013-02-09 04:15:37

标签: javascript jquery removeclass replacewith

我正在尝试制作一个隐藏特定内容的按钮 - 然后将其替换为另一个隐藏的按钮。但是,当我测试代码时,除了包含“display:none”的.removeClass之外,所有内容都会正确触发。

以下是代码:

 <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>

'hiddenbox'上的CSS只不过是“display:none”。

有一个未婚的id,当点击时淡出一个div并用隐藏的div替换它,删除该类以显示它。但是,最后一部分不会触发 - 其他一切都正常运行。当我在控制台中查看时,它也没有显示任何错误。

有人可以告诉我错误在哪里吗?谢谢!

编辑:我可能使用了错误的函数来替换div,所以这里是网站:http://drjohncurtis.com/happily-un-married。如果单击“下载书籍”按钮,div将消失,并使用div#block-webform-client-block-18正确替换。但是,它仍然是隐藏的。

2 个答案:

答案 0 :(得分:1)

您传递给replaceWith的函数必须返回您要替换它的内容。你必须实际返回内容。

我不确切知道你要完成什么,但如果目标是用webform对象替换它,你可以使用它:

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

答案 1 :(得分:-2)

注意,请使用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对象... - &gt;使用jquery API