首頁  >  工具  > $.proxy(function,context)

返回值:Boolean jQuery.proxy(function,context)

概述

jQuery 1.4 新增。返回一個新函式,並且這個函式始終保持了特定的作用域。

當有事件處理函式要附加到元素上,但他們的作用域實際是指向另一個對像時,這個方法最有用了。此外,最妙的是,jQuery能夠確保即便你繫結的函式是經過jQuery.proxy()處理過的函式,你依然可以傳遞原先的函式來準確無誤地取消繫結。請參考下面的例子。

這個函式還有另一種用法,jQuery.proxy( scope, name )。第一個參數是要設定的作用域對象。第二個參數是將要設定作用域的函式名(必須是第一個作用域對象的一個屬性)。

參數

function,context Function,Object V1.4

function :將要被改變作用域的函式

context :一個object,那個函式的作用域會被設定到這個object上來。

context,name Object,Object V1.4

context :一個object,那個函式的作用域會被設定到這個object上來。

name :改變上下文中的函式名(這個函式必須是前一個參數 'context' 對象的屬性)

示例

描述:

強制設定函式的作用域,讓this指向obj而不是#test對象。

HTML 程式碼:

<div id="test">Click Here!</div>
jQuery 程式碼:

var obj = {
  name: "John",
  test: function() {
    alert( this.name );
    $("#test").unbind("click", obj.test);
  }
};

$("#test").click( jQuery.proxy( obj, "test" ) );

// 以下程式碼跟上面那句是等價的:
// $("#test").click( jQuery.proxy( obj.test, obj ) );

// 可以與單獨執行下面這句做個比較。
// $("#test").click( obj.test );