javascript函数和这个参数的一些问题

时间:2013-11-13 20:00:32

标签: javascript function javascript-events this colorbox

我正在使用colorbox到我的弹出窗口......

这很好用。

$(".show_popup").colorbox({inline:true, width:"800px", onOpen: function() {
   type = $(this).attr('type);
   ....
}

但我想多次使用我的内部函数,所以我想让它成为模块函数。

});

(function ($,a) {
 var p = {
   showPopup: function (popup_type) { 
    ...
   },

   bindEvents: function () {
       $(".show_popup").colorbox({inline:true, width:"800px", onOpen: p.showPopup($(this).attr('type')) }); 
   }
...
}
a.Popups = p;
})(jQuery);

但这不起作用 - 这是$(this)的问题 - 并且在页面加载后函数只执行一次。

(function ($,a) {
  var p = {
   showPopup: function (popup_type) { 
    ...
   },

   bindEvents: function () {
       $(".show_popup").colorbox({inline:true, width:"800px", onOpen: p.showPopup }); 
   }
...
}
a.Popups = p;

})(jQuery);

这也不适用于腐败。但执行很多次。所以你能帮我知道什么是重要的吗?

1 个答案:

答案 0 :(得分:1)

onOpen: p.showPopup($(this).attr('type))的问题是它会在你将它绑定到onOpen时运行p.showPopup函数。你想要的是它在触发onOpen-event时运行。使用

onOpen: function() { p.showPopup($(this).attr('type')); }

代替

(编辑)假设定义了p.showPopup,我在你的代码中看不到它。