Jquery范围问题

时间:2010-12-19 00:13:27

标签: jquery

我第一次尝试编写jQuery函数。

我有这个功能,但我不确定为什么overlay var必须超出click功能的范围。我试过它但它不能正常工作。我可以重构这个以使其更好吗?

(function($) {
  $.fn.popOver = function() {

    // Variable for overlay
    var overlay = $("<div id='overlay'></div>");

    // Listen for clicks
    return this.click(function(e) {

      // Prevent the anchor link from loading
      e.preventDefault();

      // Variable for popover
      var popover = $(this).next();

      // Append the overlay to the document body
      $('body').append(overlay.click(function() {
        overlayHide();
      }))

      //Set the css and fade in our overlay
      overlay.show();
      popover.fadeIn(150);

      // Listen for clicks on elements
      popover.find('a').click(function() {
        overlayHide();
      })

      // Hide Overlay function
      function overlayHide() {
        overlay.remove();
        popover.fadeOut(150);
      }

    })
  }
}) (jQuery);

1 个答案:

答案 0 :(得分:1)

因为你没有做任何比简单地调用其他功能更具体的事情,你可以改变这样的行......

popover.find('a').click(overlayHide);