2013-05-01 69 views
4

作爲每Jquery的API文檔:Jquery的位置的方法

.POSITION()返回:對象

描述:獲取所述第一元件的當前座標集合中的匹配元素的,相對於抵消父母。

此方法不接受任何arguments.Reference here

但是地方,我發現使用此:

$("#position1").position({ 
    my: "center", 
    at: "center", 
    of: "#targetElement" 
}); 

對象已傳遞到位置的方法.Isn't這對API文檔?看起來,傳遞給上面對象的屬性有一些特殊的含義。那些屬性說明了什麼?他們做什麼?我可以完全初學jquery。所以可能是我的錯。

回答

3

.position()該變種是jQuery UI position utility的一部分。它給你一種簡單的方式來以某種方式放置一個元素相對於另一個元素(或鼠標光標)。

你是完全正確的,原來position()方法不接受參數...但:

這個插件擴展jQuery的內置.POSITION()方法。如果jQuery UI未加載,調用.position()方法可能不會直接失敗,因爲方法仍然存在。但是,預期的行爲不會發生。

+0

感謝您的信息。你能幫我以簡短的形式瞭解這些物體的屬性嗎? – 2013-05-01 12:38:14

+0

@Maizere爲什麼不閱讀[documentation](http://api.jqueryui.com/position/)? – undefined 2013-05-01 12:39:52

+0

@undefined麻煩閱讀英文。不良英語 – 2013-05-01 12:40:46

1

讓我們把它帶到codez!快速瀏覽到的jQuery 1.9.1源透露:

position: function() { 
    if (!this[ 0 ]) { 
     return; 
    } 

    var offsetParent, offset, 
     parentOffset = { top: 0, left: 0 }, 
     elem = this[ 0 ]; 

    // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent 
    if (jQuery.css(elem, "position") === "fixed") { 
     // we assume that getBoundingClientRect is available when computed position is fixed 
     offset = elem.getBoundingClientRect(); 
    } else { 
     // Get *real* offsetParent 
     offsetParent = this.offsetParent(); 

     // Get correct offsets 
     offset = this.offset(); 
     if (!jQuery.nodeName(offsetParent[ 0 ], "html")) { 
      parentOffset = offsetParent.offset(); 
     } 

     // Add offsetParent borders 
     parentOffset.top += jQuery.css(offsetParent[ 0 ], "borderTopWidth", true); 
     parentOffset.left += jQuery.css(offsetParent[ 0 ], "borderLeftWidth", true); 
    } 

    // Subtract parent offsets and element margins 
    // note: when an element has margin: auto the offsetLeft and marginLeft 
    // are the same in Safari causing offset.left to incorrectly be 0 
    return { 
     top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", true), 
     left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", true) 
    }; 
}, 

沒有參數讀取,沒有使用的參數。無論你看到那個代碼,它都不是jQuery核心。最有可能的是,因爲原作者使用了擴展該方法的jQuery UI

1
作爲

每jQuery的API爲Position

  1. :定義該元件上的位置被定位成對準 與目標元件。
  2. :定義對齊靠在定位元件,其在目標元件上的位置,
  3. :是對所述元件對的位置。如果您提供選擇器,則將使用第一個匹配元素。例如:"#targetElement"你的情況。