当我每次点击按钮时,函数再次运行。为什么?
我必须点击两次,但我不会只点击一次。
在google chrome中试试这段代码。
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<div id="one" >   Srboljub Petrovic</div>
<input type="button" id="f" value="Klikni" onclick="f1();"></input>
<script>
function f1()
{
$("#f").click(function()
{
$("#one").slideUp();
$("#one").css("border", "5px solid gray");
$("#one").css("background-color", "red");
$("#one").css("color","white");
$("#one").slideDown();
});
}
</script>
</body>
</html>
发布于 2013-06-21 23:12:38
您在单击处理程序中绑定了一个单击处理程序,因此每次单击按钮时,都会绑定一个新的单击事件处理程序,并且它会不断增加。
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(function() {
$("#f").on('click', function() {
$("#one").slideUp(function() {
$(this).css({border : "5px solid gray",
backgroundColor: "red",
color : "white"})
.slideDown();
});
});
});
</script>
</head>
<body>
<div id="one">  Srboljub Petrovic</div>
<input type="button" id="f" value="Klikni" />
</body>
</html>
注意,输入元素没有结束标记,并且jQuery方法是可链接的。
此外,要在元素向下滑动后向上滑动,请使用回调。
发布于 2013-06-21 23:12:45
之所以会发生这种情况,是因为您既在HTML中分配了单击处理程序,又在每次调用时在f1
中分配了另一个处理程序。如果您使用Javascript分配事件处理程序,则不应在HTML中也分配它们:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<div id="one" >   Srboljub Petrovic</div>
<input type="button" id="f" value="Klikni"></input>
<script>
$("#f").click(function(){
$("#one").slideUp();
$("#one").css("border", "5px solid gray");
$("#one").css("background-color", "red");
$("#one").css("color","white");
$("#one").slideDown();
});
</script>
</body>
</html>
发布于 2013-06-21 23:13:18
在绑定click函数之前,请确保将其解除绑定。
function f1()
{
$("#f").unbind("click").click(function()
{
//code
});
}
https://stackoverflow.com/questions/17245563
复制相似问题