取消绑定并重新绑定点击

时间:2015-04-17 23:34:00

标签: jquery image click bind unbind

我有以下代码:

$('#maincontent img').click(function(){
    console.log($(this).attr('src'));
    $myFile = $(this).attr('src');
    /*$('#gallery').css('height',0);*/
    $('#gallery').html('<img src="'+$myFile+'" />');
    $('#gallery').fadeIn();
        $('#gallery').click(function(){
            $('#gallery').fadeOut();
                 $('#maincontent img').unbind('click');
                 $('#maincontent img').click(function(){
                      $myFile = $(this).attr('src');
                      $('#gallery').append('<img src="'+$myFile+'" />');
                      $('#gallery img').last().css('display','none').fadeIn();

现在#gallery会在我点击它时淡出。但问题是,由于.unbind('click'),我无法在$('#maincontent img')之后再次点击$('#gallery').fadeOut()。我想我必须在某处再次.bind('click')

我以为我只需在两者之间插入一个动作,例如:

$('#maincontent img').hover(function(){
    $('#maincontent img').bind('click');

这样我可以在#maincontent img上悬停后再次点击$('#maincontent img')。但我无法得到任何回应。我想我只是不知道它需要什么动作才能重新绑定。谢谢!

#maincontent是加载外部页面的div,它包含一些图像缩略图。 #gallery是另一个加载#maincontent图像的div。这是网站:http://stampswebdesign.com/manklei/project3/index.html

1 个答案:

答案 0 :(得分:0)

看起来你本质上嵌套了相同的代码块。我正在考虑将其分解为一个功能。即。

var clickEvent = function () {
        $('#gallery').fadeOut();
             $('#maincontent img').unbind('click');
             $('#maincontent img').click(function(){
                  $myFile = $(this).attr('src');
                  $('#gallery').append('<img src="'+$myFile+'" />');
                  $('#gallery img').last().css('display','none').fadeIn();

. . .

$(&#39; #maincontent img&#39;)。点击(clickEvent);

然后按照ajpocus:https://api.jquery.com/off/

的建议使用off()函数

这样的东西?

$(&#39; #maincontent img&#39;)。off();