2009-10-05 64 views
0

我有這一點的代碼。簡單的jQuery功能幫助

我想要的是當我點擊.delbutton #slide會隱藏。

$(document).ready(function() { 
    var slide = $('#slide') 
    $('.link').click(function() { 
     slide.animate({'bottom' : '0px'}, 500).append('<div class="delbutton"></div>')    
    }); 
}); 

$(document).ready(function(){ 
    $('.delbutton').click(function() { 
     $('#slide').hide() 
    })      
}) 

無法弄清楚它有什麼問題。只是不工作。

感謝您的幫助

回答

6

您的點擊功能未應用於任何事物,因爲您將其添加到的DIV在應用時不存在。您需要使用live處理程序,該處理程序可用於點擊處理程序,但不適用於所有類型的事件。

$(".delbutton").live("click", function(){ 
    $('#slide').hide(); 
}); 
+0

+1打我吧(: – peirix 2009-10-05 12:23:20

+0

使用live()或添加點擊處理程序創建div – 2009-10-05 12:24:03

0

您可以使用live()正如在其他的答案被提出,或設置在創建<div class="delbutton">點單擊事件處理程序。順便說一句,它是故意的,它沒有任何內容?

$(document).ready(function(){ 
    var slide = $('#slide') 
    $('.link').click(function(){ 
     var div = $('<div class="delbutton">Delete</div>').click(function(){ 
      slide.hide(); 
     }); 
     slide.animate({'bottom' : '0px'}, 500).append(div) 
    }); 
}); 
0
function(){$('#slide').hide();} 

在隱藏的結束,也許分號(;)需要?

P.s.如果您還沒有這樣做,請使用FireBug Firefox附加組件進行JS調試。

+0

該死的......沒有注意到追加xD – 2009-10-05 12:24:52

0

我的唯一明顯的事情是,你已經錯過了一個分號這裏:

var slide = $('#slide') 

而且你要添加一個click事件的東西,不存在(還)...

$(document).ready(function(){ 
    $('.link').click(function(){ 
     $('#slide').animate({'bottom' : '0px'}, 500).append('<div class="delbutton"></div>'); 
    }); 
    $('.delbutton').live(function(){ 
     $('#slide').hide(); 
    }); 
}); 
0

你需要附上.delbutton事件已附加這樣的後:

$(document).ready(function(){ 
    var slide = $('#slide') 
    $('.link').click(function(){ 
     slide.animate({'bottom' : '0px'}, 500).append('<div class="delbutton"></div>'); 
     $('.delbutton').click(function(){ 
      $('#slide').hide(); 
     }); 
    }); 
}); 

另一種方法是溶膠這個問題將使用live()函數來進行綁定,這不僅會影響DOM中的元素,還會影響將要添加的元素。你在做這件事的方式有點兒詭異,因爲你每次在.link上添加div時都會附加一個div。最好只創建一次,然後只顯示/隱藏它,或者從一開始就創建它,然後只顯示/隱藏它。