鍍金池/ 問答/HTML/ 請教一個簡單的JQuery問題

請教一個簡單的JQuery問題

<script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.js"></script>
<div class="t1">
    <p>test</p>
</div>
<script>
    $(".t1").click(function () {
        //$(".t1").attr('class', 't2');
        $(".t1").removeClass("t1").addClass("t3");
        // console.log(this.attr('class'));
        console.log("also can click");
    });
</script>

為什么已經(jīng)改變了元素的 classname ,但是依然能 click ?

回答
編輯回答
傻叼

demo
類名只是讓你找到要綁定的DOM節(jié)點,事件是綁定在這個節(jié)點上,而不是綁在類上。所以你刪除類是沒有用的,就像你的代碼或是我demo中的按鈕1。而想要實現(xiàn)只點一次的情況,需要使用removeEventListener方法。

2018年5月11日 15:38
編輯回答
涼薄

$(".t1")這個東西的參數(shù)叫做選擇器,返回值是符合的DOM。
然后呢,在DOM上添加了click事件。

添加完了之后你再去改class也沒用。因為事件是之前綁上去的。就和你再新增一個叫.t1的DOM也不會有這個click事件了。

當然,jquery有事件委托的寫法。是通過把事件綁在父級,然后通過e.target來判斷觸發(fā)元素的。是動態(tài)的

2017年1月21日 11:49
編輯回答
悶騷型

事件已經(jīng)綁定了,不是像想的那樣換了類名事件就解綁了

2018年6月29日 08:01
編輯回答
筱饞貓

事件是綁定在了那個div上了,你改變它的class,div還是那個div呀

2017年10月4日 20:41
編輯回答
風畔
2018年8月22日 14:18
編輯回答
蝶戀花

這個應該用 toggle

2017年2月16日 18:29
編輯回答
艷骨
 $("body").on("click",".t1",function () {
        $(".t1").removeClass("t1").addClass("t3");
        console.log("also can click");
    });

→_→改成這樣就不能了,正如上面有人說的

2017年1月8日 00:32