0
zoom: function ( element, scale ){.....},
init: function() {
    $("#book div img").live('dblclick', function() {
       ...
       $( "#slider" ).slider({
       ...
          slide: function( event, ui ) {
             //call function here
             zoom (element,ui.value);
          }
       });
    });
},

有两个功能,缩放和主功能。主函数调用缩放函数执行工作,但是由于不在同一级别,浏览器返回 undefined function 'zoom' 的错误。如何解决这个问题(能够在幻灯片中调用缩放:函数)?

4

3 回答 3

2

this对象的引用存储在函数的最外层范围内。然后this.zoom()在你的回调中调用:

zoom: function ( element, scale ){.....},
init: function() {
    // store a reference to the object these functions are being added to
    var that = this; 

    $("#book div img").live('dblclick', function() {
       ...
       $( "#slider" ).slider({
       ...
          slide: function( event, ui ) {
             // use the var you made above to call zoom
             that.zoom (element,ui.value);
          }
       });
    });
},

简化示例:http: //jsfiddle.net/u5ZL3/

于 2012-12-11T02:34:30.863 回答
0

无耻地取自:如何在 JavaScript 中声明命名空间?

//Public Method
skillet.fry = function() {
    var oliveOil;

    addItem( "\t\n Butter \n\t" );
    addItem( oliveOil );
    console.log( "Frying " + skillet.ingredient );
};

//Private Method
function addItem( item ) {
    if ( item !== undefined ) {
        console.log( "Adding " + $.trim(item) );
    }
} 
于 2012-12-11T02:34:49.980 回答
0

如果你的班级叫 Bob,你可以像这样调用函数

Bob.zoom (element,ui.value);

另一种解决方案是使用“this”,它比调用我相信的类名具有一些优势,但需要更多代码。

于 2012-12-11T02:52:56.107 回答