[英]Why a click event in jquery doesn't apply to my new element?
我有三個div,分別具有左,中和右類,我想交換他們的位置,並在他們轉到新位置時應用新類。 但是由於某種原因它不起作用這是我的腳本:
$(function() {
$(".left").css("left","50px");
$(".center").css("left","300px");
$(".center").css("width","300px");
$(".center").css("height","300px");
$(".center").css("top","25px");
$(".right").css("left","650px");
$(".right").click(function(){
$(".left").animate({
left: '650px'
}, 1000, function() {
});
$(".center").animate({
left: '50px',
width: '200px',
top: '75px',
height: '200px'
}, 1000, function() {
});
$(".right").animate({
left: '300px',
width: '300px',
height: '300px',
top: '25px'
}, 1000, function() {
});
$(".bule").removeClass("left right center");
$(".second").addClass("left");
$(".third").addClass("center");
$(".first").addClass("right");
$(".bule").removeClass("first second third");
$(".left").addClass("first");
$(".center").addClass("second");
$(".right").addClass("third");
});
});
這是一個工作示例。
當您使用jQuery選擇器$('...')
選擇元素時-會對選擇進行評估,並對這些元素執行以下操作。 如果以后再刪除某個類或更改所選元素的ID,則說明這些操作已經執行-因此將繼續執行。 同樣,它們不會自動繼承其他選擇器的操作(因為在進行選擇時它們沒有該類/ ID)。
如果要綁定一次事件,並在添加新元素或更改類時使它們起作用,則需要使用稍微不同的事件語法:
$('body').on('click', '.right', function() {
});
請注意,選擇器現在是body元素的原因(因為運行時body元素將始終存在)。 您在這里告訴jQuery的是將click
事件綁定到<body>
元素,然后,當單擊<body>
的子代時,請根據表達式.right
評估該元素。 如果該表達式匹配,請調用我的函數。
此方法利用了javascript事件傳播的優勢,其中事件一直冒泡直至其最高祖先。 這意味着在div內的鏈接上單擊將觸發該鏈接,div和主體的單擊事件-按該順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.