-1

我有一个 jquery 'show' 方法,我在网页上使用该方法在单击按钮时在 div 中显示大量隐藏数据,例如

$(document).ready(function(){
    $("button#show").click(function(){
    $("div.show").show();    
    });
 }); 

我以前用过这个没有问题。在这种情况下似乎发生的是,当我单击按钮时,文本显示,但页面进入加载状态。然后,一旦完成,文本就会再次消失。无论我使用“显示”还是“切换”,这似乎都会发生。有没有人遇到过这种行为?我不确定这是否是我的代码中其他地方的问题(我正在使用 php 为 div 生成内容)或 jquery 的一些问题。

[编辑] 这是按钮的 html

<br/><button id='toggle'>Show all</button>
<div>All the content goes here</div>
4

2 回答 2

0

我在这里发现了问题,只是将其作为答案,以防它对其他人有所帮助。我的其他一些代码阻止显示结束</form>标记,这意味着页面被解释为好像<button>属于表单。我认为浏览器将它视为 TJ 建议的新提交按钮,即使它没有这样编码,并因此重新提交表单。

于 2012-07-05T11:31:03.477 回答
0

听起来按钮是一个submit按钮(注意这submit是a的默认类型button,所以如果你没有type=,它是一个提交按钮)。您需要阻止默认操作(即提交表单)。但是请注意,阻止按钮本身的默认设置可能不足以跨浏览器,您可能需要submit在表单上使用处理程序并在那里取消操作。

同样,如果“按钮”实际上是一个样式看起来像按钮的链接,则需要阻止默认设置(即跟随链接)。

在 jQuery 事件处理程序中,您可以通过接受event传递给您的参数并调用其preventDefault方法来防止默认设置:

$(document).ready(function(){
    $("button#show").click(function(event){
        event.preventDefault();
        $("div.show").show();    
    });
});

...或通过return false处理程序执行,这将防止默认停止传播(冒泡)。

于 2012-07-05T11:09:36.893 回答