无法得到.replaceWith()正常工作
我试过这个.toggle()和下面的更长的表单。如果我取出.replaceWith的行,它可以很好地显示和隐藏#表单,但是它可以......#表单取消隐藏和#show-form更改正确,但不适用于下次点击。无法得到.replaceWith()正常工作
任何人都可以看到我在做什么错?
<script type="text/javascript">
jQuery('#show-form').click(
function() {
if (jQuery("#the-form").is(":hidden")) {
jQuery('#the-form').show('fast');
jQuery('#show-form').replaceWith('<div id="show-form">Hide Form</div>');
} else {
jQuery('#the-form').hide('fast');
jQuery('#show-form').replaceWith('<div id="show-form">Show Form</div>');
}
});
</script>
UPDATE:从报价删除反斜杠。
更新2工作版本:
<script type="text/javascript">
jQuery('#show-form').live('click',
function() {
if (jQuery("#the-form").is(":hidden")) {
jQuery('#show-form').html('Hide Form');
jQuery('#the-form').show('fast');
} else {
jQuery('#show-form').html('Show Form');
jQuery('#the-form').hide('fast');
}
});
感谢您的帮助!
搬家回答:
为什么不直接使用html函数呢? jQuery('#show-form')。html('隐藏窗体'),反之亦然
从div id
属性中的双引号中删除反斜杠。他们不需要转义,因为字符串已经被单引号封装了。
jQuery('#show-form').replaceWith('<div id="show-form">Hide Form</div>');
此外,将replaceWith()
移动到显示和隐藏的回调函数。
jQuery('#the-form').show('fast', function(e) {
jQuery('#show-form').replaceWith('<div id="show-form">Hide Form</div>');
});
那么你就必须重新将点击事件#表演形式。您可以使用jQuery live()
即时重新附加事件。 See about it here。
因此,使用html()
代替它可能会更好。
例如
jQuery('#show-form').html('Hide Form');
这样,你不删除和readding一个新的DOM元素,因此原来的onclick事件侦听器保持不变。
事实上,在添加它们之前它是失败的......但是我会试一试,以防它们从.toggle()尝试中遗留下来。 –
迈克尔,看到我的答案。经过测试和工作。尽管如此,斜杠评论+1到mmmshuddup。如果您使用双引号指定字符串,则不需要单引号,反之亦然。 :) – bozdoz
只是测试它没有斜线和所述的相同问题。 –
您正在使用点击处理程序,但您需要使用实时点击处理程序,因为您正在重新创建整个#show-form元素。
这应该工作:
jQuery('#show-form').live('click',
function() {
if (jQuery("#the-form").is(":hidden")) {
jQuery('#show-form').replaceWith('<div id="show-form">Hide Form</div>');
jQuery('#the-form').show('fast');
} else {
jQuery('#show-form').replaceWith('<div id="show-form">Show Form</div>');
jQuery('#the-form').hide('fast');
}
});
现场处理工作的动态创建的元素,如您重新创建一个。
使用jquery live +1。这件事很神奇lol –
即使它在我尝试乔丹的答案时工作,我只是更新了我的代码和上面的工作代码以包含您的建议。谢谢! –
非常感谢。 :) – bozdoz
为什么不直接使用html函数? jQuery('#show-form')。html('隐藏窗体'),反之亦然 –
实际上,乔丹有最好的答案。 – bozdoz
@Joardan ...刚试过你的建议,它的工作原理!你为什么不把它移到答案,以便我可以正确地称赞你? –