jQuery点击弹出+1放大效果前后台都只有一次有效如何实现?

iou3344 2016-03-05 09:13:45

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery点击弹出+1放大效果</title>
<style type="text/css">
body {margin:0; padding:0;font:12px/1.5 arial; color:#3E3E3E;}
p {margin-bottom:80px;}
#btn {width:90px;height:36px;border:none;background-color:#069;color:#fff;font-size:14px;font-family:Microsoft YaHei;cursor:pointer;}
</style>
</head>
<body>
<p> </p>

<p style="text-align:center;"><button class="btn">点击+1</button></p>
<p style="text-align:center;"><button class="btn">点击+1</button></p>
<p style="text-align:center;"><button class="btn">点击+1</button></p>

<script src="http://www.w3school.com.cn/jquery/jquery-1.11.1.min.js"></script>
<script>
;(function($) {
$.extend({
tipsBox: function(options) {
options = $.extend({
obj: null, //jq对象,要在那个html标签上显示
str: "+1", //字符串,要显示的内容;也可以传一段html,如: "<b style='font-family:Microsoft YaHei;'>+1</b>"
startSize: "12px", //动画开始的文字大小
endSize: "30px", //动画结束的文字大小
interval: 600, //动画时间间隔
color: "red", //文字颜色
callback: function() {} //回调函数
}, options);
$("body").append("<span class='num'>"+ options.str +"</span>");
var box = $(".num");
var left = options.obj.offset().left + options.obj.width() / 2;
var top = options.obj.offset().top - options.obj.height();
box.css({
"position": "absolute",
"left": left + "px",
"top": top + "px",
"z-index": 9999,
"font-size": options.startSize,
"line-height": options.endSize,
"color": options.color
});
box.animate({
"font-size": options.endSize,
"opacity": "0",
"top": top - parseInt(options.endSize) + "px"
}, options.interval , function() {
box.remove();
options.callback();
});
}
});
})(jQuery);
</script>

<script>
$(function() {
$(".btn").click(function() {
$.tipsBox({
obj: $(this),
str: "+1",
callback: function() {
//alert(5);
}
});
});
});
</script>

</body>
</html>


这个点击+1的js效果,如何实现每个按钮只有第一次点击才出现+1的效果呢?再点不出现+1动画。

不然不加限制,用户每点一次都有这个效果也怪吓人的...他还以为他可以捣乱了呢。。。
...全文
151 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
iou3344 2016-03-08
感谢老大:)
  • 打赏
  • 举报
回复
Go 旅城通票 2016-03-07
是的,至于间隔多少小时你自己控制
if就行啊,干嘛用case

'''''''''MSSQL
set rs=conn.execute("select count(id字段名称) from yourtable where ip='获取到的客户ip' and datediff(hh,uptime,getdate())<24")
'''''''''ACCESS
'set rs=conn.execute("select count(id字段名称) from yourtable where ip='获取到的客户ip' and datediff('h',uptime,now)<24")
if rs(0)>0 then
conn.close:set conn=nothing
response.write "24小时内只能投点一次"
response.end
end if
  • 打赏
  • 举报
回复
iou3344 2016-03-07
引用 1 楼 showbo 的回复:
用one来执行绑定,而不是click,one就只执行一次,不过刷新页面后还可以继续点击,你一定要控制一个人只能点一次需要用cookie或者服务器端来控制,如ip地址什么的,服务器端才是持久化选择,cookie的话清空下浏览器cookie就可以继续了

            $(".btn").one('click',function () {
                $.tipsBox({
                    obj: $(this),
                    str: "+1",
                    callback: function () {
                        //alert(5);
                    }
                });
            });
谢谢版主。我今天晚上一气把cookies功能加上去了。 你说的后端进一步的控制办法就是点击+1后同时在数据库里面记录下最后一次点击的时间和IP是吗 然后即便清空了cookies,再次点击时,数据库+1前比较IP和上次点击的记录 1、如果IP相同而且与上次点击时间相差小于24小时就写入+1,否则不执行是吗? 2、如果没有这个IP就+1是吗? 3、如果IP相同但是与上次点击时间相差大于24小时就写入+1是吗? 用case语句还是if then else语句更好呢?我想也学着写一下~
  • 打赏
  • 举报
回复
Go 旅城通票 2016-03-06
用one来执行绑定,而不是click,one就只执行一次,不过刷新页面后还可以继续点击,你一定要控制一个人只能点一次需要用cookie或者服务器端来控制,如ip地址什么的,服务器端才是持久化选择,cookie的话清空下浏览器cookie就可以继续了

            $(".btn").one('click',function () {
                $.tipsBox({
                    obj: $(this),
                    str: "+1",
                    callback: function () {
                        //alert(5);
                    }
                });
            });
  • 打赏
  • 举报
回复
发帖
JavaScript

8.6w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2016-03-05 09:13
社区公告
暂无公告