2017-01-01 72 views
3

我正在嘗試創建一個腳本,它將更改另一個元素的類以避免在新類下激活腳本,但是,它沒有向腳本註冊,腳本會考慮老班還在那裏。.click沒有註冊更改的類

<script> 
$(document).ready(function(){ 
$(".element1").click(function(){ 
    $(".element1").addClass("clicked"); 
    $(".element1").removeClass("element1"); 
});}); 
</script> 

當前代碼是以上我正在嘗試實現。

+2

什麼連同它的HTML? – Jhecht

+1

是的,請添加所需的代碼 –

+0

我已經爲一個更新的,這肯定需要一個http://stackoverflow.com/questions/41413773/click-not-registering-changed-class/41413810#41413810 – vijay

回答

1

試試這個,你可以通過使用特定元素的onclick來實現它。這裏點擊監聽器在點擊時綁定到文檔中的「.element1」。

,如果你想執行一個click事件只有一次,那麼你也可以使用.one()

$(".element1").one("click",function(){ 
    <!-- your code here --> 
}); 

$(document).ready(function() { 
 
    $(document).on("click", ".element1", function() { 
 
    console.log("click"); 
 
    $(".element1").addClass("clicked"); 
 
    $(".element1").removeClass("element1"); 
 
    }); 
 
});
.element1 { 
 
    width: 100px; 
 
    height: 100px; 
 
    background-color: green; 
 
} 
 
.clicked { 
 
    width: 100px; 
 
    height: 100px; 
 
    background-color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<div id="div1" class="element1"></div>

+0

這工作太, 謝謝。 –

+1

如果要執行你的事件只是一個時間則u也可以使用。一()在更新 – vijay

+0

同樣的問題給你,有沒有辦法扭轉這種腳本,並添加回「部件1」,同時取消對點擊「點擊」另一個元素如元素2並重復。 –

0

不喜歡這裏這

$(document).ready(function() { 
    $(".element1").click(function() { 
    $(this).addClass("clicked").removeClass("element1"); 
    }); 
}); 

jquery method-chaining用來。你不需要選擇元素多的時間來添加方法將其

1

我的解決方案是:在div

看到一個(點擊),關(),上();在:

http://www.w3schools.com/jquery/event_one.asp

http://www.w3schools.com/jquery/event_on.asp

http://www.w3schools.com/jquery/event_off.asp

$(document).ready(function(){ 
 
$(".element1").one("click", function() { 
 
    console.log("is clicked"); 
 
    $(".element1").addClass("clicked").removeClass("element1"); 
 
}); 
 
});
.element1{ 
 
background-color:red; 
 
} 
 
.clicked{ 
 
background-color:blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="element1">hola</div>

+0

這產生了和我一樣的問題,當你點擊div「clicked」時,它仍然認爲你正在點擊控制檯中看到的element1。 –

+0

@DanRoss編輯我的回答 – hubman

2

具有類element1被綁定到的點擊的元件(一個或多個)加載處理程序...

即使您從中刪除類,它仍然綁定到事件處理程序。
正如你可以看到下面:

$(document).ready(function(){ 
 
    $(".element1").click(function(){ 
 
     console.log("click"); 
 
     $(".element1").addClass("clicked"); 
 
     $(".element1").removeClass("element1"); 
 
    }); 
 
});
.element1{ 
 
    color:blue; 
 
} 
 
.clicked{ 
 
    color:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="element1">element 1</div>

我建議你使用off()這樣的:
感謝Dashtinejad爲mentionning該.unbind()被棄用的jQuery 3.0 ...工程一樣。

$(document).ready(function(){ 
 
    $(".element1").click(function(){ 
 
     console.log("click"); 
 
     $(this).off("click").addClass("clicked").removeClass("element1"); 
 

 
    }); 
 
});
.element1{ 
 
    color:blue; 
 
} 
 
.clicked{ 
 
    color:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="element1">Element 1</div>

而且使用鏈接...
;)

+1

從jQuery 3.0開始,'.unbind()'已被棄用。自從jQuery 1.7以來,它被'.off()'方法所取代,所以它的使用已經不受歡迎。 – dashtinejad

+0

我有一個更新的,這肯定是你需要的一個http://stackoverflow.com/questions/41413773/click-not-registering-changed-class/41413810#41413810 – vijay

+0

好吧,問題,經過測試的一切,我想知道我如何才能扭轉這種效應?當這個類被移除並被element1替換時,它仍然認爲它是「被單擊的」而不是element1。使用相同的代碼沒有工作,出於某種原因 –