我正在尝试制作一个隐藏特定内容的按钮 - 然后将其替换为另一个隐藏的按钮。但是,当我测试代码时,除了包含“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正确替换。但是,它仍然是隐藏的。
答案 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