簡體   English   中英

jquery插件的子選項

[英]Sub Options for jquery plugin

我正在開發一個插件。 確切地說是一個拖放插件。

我的默認值如下所示:

var defaults = {
    activeClass: false,
    containment: false,
    cookies: true,
    cookieExdate: 65,
    cursor: 'crosshair',
    cursorAt: {
        top: false,
        bottom: false,
        left: false,
        right: false
    },
    delay: 0,
    distance: 0,
    dragLimitation: false,
    ghostDrop: true,
    ghostOpacity: '0.50',
    ghostRevert: false,
    grid: [20,50],
    handle:false,
    iFrameFix: true,
    instantGhost: false,
    not: false,
    onDrop: function() {},
    onPickUp: function() {},
    radialDrag: true,
    radialOutline: false,
    radius: 100,
    revert: false,
    revertDuration: 500,
    strictMovement: false,
    target: {
        init: '#container',
        lock: false,
        offTarget: function(t) {
            $(t).removeClass('i');
        },
        onTarget: function(t) {
            $(t).addClass('i');
        }
    },
    zIndex: false
}

然后我用:

var o = $.extend(defaults, options)

獲取默認值。

Ex. o.cursorAt.left. 這將獲得cursorAt left的Sub選項的值如您所見,我有子選項(我稱之為),它們看起來像這樣:

cursorAt: {
    top: false,
    bottom: false,
    left: false,
    right: false
},

當我在我的插件中使用它時,我只想使用一個。 例如:

cursorAt: {
    bottom: 0
}

但這不起作用,我知道這是因為在cursorAt spot的默認值中,必須有以下內容:

{
    top: false,
    bottom: false,
    left: false,
    right: false
}

有沒有辦法使它工作,所以我只需要命名一個。 任何簡單的方法? 或者這將是一個艱難而復雜的過程。 我的插件代碼已經有1000行,所以我不想做出重大改變。

Jsfiddle的例子:

這有效:

http://jsfiddle.net/C4f97/

但這不是: http//jsfiddle.net/C4f97/1/ <<我需要這個工作......

對我的插件的任何評論都會很好;)在此先感謝!

試試這個:

var o = $.extend(true, {}, defaults, options);

這里有兩個值得注意的細節。 第一個是布爾值true,它告訴jQuery遞歸地擴展它們(不要覆蓋你的“子選項”)。

第二個是{},它創建一個新對象,因此每次創建新實例時都不會實際修改默認值。

將選項復制到默認值時,您希望使用“深層復制”,它通過子對象進行遞歸並復制所有內容。

$.extend(true, defaults, options);

http://api.jquery.com/jQuery.extend/

使用$.extend(true, defaults, options)深度復制到遞歸合並。 jQuery.extend

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM