强制窗口以正确的超链接关闭

时间:2014-12-03 14:08:55

标签: jquery hyperlink window

继续jQuery Align DIV to Link

我现在有了一个工作脚本,可以打开我点击链接旁边的窗口。

我遇到的问题是当窗口打开时单击另一个链接时会发生什么。如果我单击链接D,则会打开窗口。如果我点击链接A,窗口在'D'打开,窗口在链接A关闭。

FIDDLE 显示了我的意思。

我想做的是。关闭打开的窗口并在新链接处重新打开,或仅允许通过关闭链接关闭。

这是我正在使用的代码:

function deselect(e) {
  $('.pop').slideFadeToggle(function() {
    e.removeClass('selected');
  });    
}

$(function() {
        $("[id$='contact']").click(function(){

    if($(this).hasClass('selected')) {
      deselect($(this));               
    } else {
      $(this).addClass('selected');
      $(".messagepop").css( {position:"absolute",
                             top:$(this).offset().top,
                             left: $(this).offset().left});
      $('.pop').slideFadeToggle();
    }
    return false;
  });

  $('.close').on('click', function() {
    deselect($('#contact'));
    return false;
  });
});

$.fn.slideFadeToggle = function(easing, callback) {
  return this.animate({ opacity: 'toggle', height: 'toggle' }, 'fast', easing, callback);
};

我知道我能做到这一点吗?

1 个答案:

答案 0 :(得分:0)

我可以在这里找到的问题,您在动画中使用切换功能并尝试控制点击事件。您需要处理显示/隐藏的动画而不是使用切换。

但是,JS代码正如预期的那样工作。如果它解决了你的目的,请尝试尝试从动画中删除切换。

$(function() {
  $("[id$='contact']").click(function(){
    var src = $(this);
    $("[id$='contact']").removeClass('selected');
    $('.pop').slideFadeToggle(function() {
       $(".messagepop").css( {position:"absolute",
                             top:src.offset().top,
                             left:src.offset().left});
       src.addClass('selected');
     }); 

    return false;
  });

  $('.close').on('click', function() {
    deselect($('#contact'));
    return false;
  });
});

$.fn.slideFadeToggle = function(easing, callback) {
  return this.animate({ opacity: 'toggle', height: 'toggle' }, 'fast', easing, callback);
};