亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jquery bind

jquery bind

largeQ 2018-12-06 20:55:46
<div class="divs"> <div></div> <div></div> <div></div> <div></div> </div> 我想給class="divs"下面的每個div加個bind的點擊事件, 然后點擊當中的任何一個div的時候我想解除,除當前div以外的div的 bind事件,會有三秒的延時,等延時結束后其它div就恢復bind,這個怎么做(簡單說就是點擊某個div禁用掉其它div的所以點擊功能)
查看完整描述

5 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

(function() {
?? ?var time = 3;
?? ?var index = -1;
?? ?$('.divs div').bind('click', function() {
?? ??? ?var _this = $(this);
?? ??? ?var thisIndex = $('.divs div').index(_this);
?? ??? ?if(time <= 0) {
?? ??? ??? ?time = 3;
?? ??? ??? ?index = -1;
?? ??? ?}
?? ??? ?if(index < 0) {
?? ??? ??? ?index = thisIndex;
?? ??? ??? ?timeCounter();
?? ??? ?}
?? ??? ?if(time > 0 && index != _this.index()) {
?? ??? ??? ?return false;
?? ??? ?}
?? ??? ?//
?? ??? ?console.log(_this.text());
?? ?});
?? ?function timeCounter() {
?? ??? ?var start = setTimeout(function() {
?? ??? ??? ?--time;
?? ??? ??? ?if(time < 0) {
?? ??? ??? ??? ?clearTimeout(start);
?? ??? ??? ??? ?return false;
?? ??? ??? ?}
?? ??? ??? ?setTimeout(arguments.callee, 1000);
?? ??? ?}, 1000);
?? ?}
})();

查看完整回答
反對 回復 2018-12-24
?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

        $(window).load(function(){
            $(".divs div").bind("click",function(){
                var item=$(this);
                setTimeout(function(){
                $(".divs div").unbind("click");
                alert("移出其他事件");
                item.bind("click",function(){
                alert("只有我能點");
                })
                },3000);
            });
        });

HTML不變,將上面的代碼加入js即可,我測試了,沒問題。

查看完整回答
反對 回復 2018-12-24
?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

?這樣不行,取消unbind再bind就沒效了

查看完整回答
反對 回復 2018-12-24
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

@Mi文: 可以的吧,你只需要把第一次觸發時間的Element用變量保存下來,我覺得應該好做吧~

查看完整回答
反對 回復 2018-12-24
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

如果通過委托,則可以這樣:

?

//通過事件委托來做(jQuery.fn.on)
var lockDiv;
$('.divs').on('click', 'div', function () {
    if (lockDiv != null && lockDiv != this) return;
    lockDiv = this;
    var self = $(this);
    alert('你點擊的div的邏輯');
    setTimeout(function () {
        lockDiv = null;
    }, 3000);
});

?

考慮到性能,不要頻繁的bind/unbind事件,通過在事件中判定是否禁止此次邏輯即可。

?

也可以這樣:

//每個div綁定,適用于div各自事件邏輯不同
var cacheIndex = -1;
$('.divs>div').each(function (i) {
    $(this).on('click', function () {
        if (cacheIndex !== -1 && cacheIndex != i) {
            alert('你的邏輯');
            setTimeout(function () {
                cacheIndex = -1;
            });
        }
    });
});

多使用jQuery.fn.on少使用jQuery.fn.bind,jQuery.fn.bind API已被廢棄(好像是在1.7之后)

?

?

查看完整回答
反對 回復 2018-12-24
  • 5 回答
  • 0 關注
  • 704 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號