jQuery 监听元素出现

$.fn.wait = function (func, times, interval) {
    var _times = times || -1, //100次
        _interval = interval || 20, //20毫秒每次
        _self = this,
        _selector = this.selector, //选择器
        _iIntervalID; //定时器id
    if( this.length ){ //如果已经获取到了,就直接执行函数
        func && func.call(this);
    } else {
        _iIntervalID = setInterval(function() {
            if(!_times) { //是0就退出
                clearInterval(_iIntervalID);
            }
            _times <= 0 || _times--; //如果是正数就 --

            _self = $(_selector); //再次选择
            if( _self.length ) { //判断是否取到
                func && func.call(_self);
                clearInterval(_iIntervalID);
            }
        }, _interval);
    }
    return this;
};

jQuery 短信获取倒计时

<head>
	<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script>
</head>

<input id="smspwd" type="button" value="短信获取" onclick='getSMS()'>

<script type="text/javascript">		
	function getSMS(){
		console.log(1)
		$("#smspwd").smsCountdown({begin: 10})
	}
</script>


<script type="text/javascript">		
	$.fn.extend({
		smsCountdown:function(){
			var params = {
				begin: arguments[0].begin || 0,
				way: arguments[0].way || 'input'
			};
			var $me = this;
			if(params.begin>0){
				$me.attr('disabled',true);
				var count = params.begin;		
				if(params.way == 'button'){
					var resend = setInterval(function(){
						count--;
						if (count > 0){
							$me.html("\u7b49\u5f85"+count+"\u79d2");
						}else {
							clearInterval(resend);
							$me.removeAttr("disabled").html("\u77ed\u4fe1\u83b7\u53d6");
						}
					}, 1000);
				}else{
					var resend = setInterval(function(){
						count--;
						if (count > 0){
							$me.val("\u7b49\u5f85"+count+"\u79d2");
						}else {
							clearInterval(resend);
							$me.removeAttr("disabled").val("\u77ed\u4fe1\u83b7\u53d6");
						}
					}, 1000);
				}
			}else{
				if(params.way == 'button'){
					$me.removeAttr("disabled").html("\u77ed\u4fe1\u83b7\u53d6");
				}else{
					$me.removeAttr("disabled").val("\u77ed\u4fe1\u83b7\u53d6");
				}
			}
		},
	})
</script>