2014-11-21 29 views
1

我有片斷,我想給名字和=true;變量,然後在整個文檔中的HTML呼叫的名稱在<script>標籤,並可以設置它到falsetrue給片段的名稱和真/假變量

我該怎麼做?

的片段是:我會怎麼做

$(".me").click(function() { 
    $(".hidden").fadeIn(500); 
}); 

例子:

enable_click_function: true; 

if (self.settings.enable_click_function) { 
    self.enableClickFunction(); 
} 

enableClickFunction: function() { 
    var self = this; 
    $(".me").click(function() { 
     $(".hidden").fadeIn(500); 
    }); 
}; 

而一個jsfiddle

回答

1

你可以使用的setter的getter模式。

例如,爲您的配置創建定義。一個「設置」對象來保存初始化器屬性。您的代碼段的方法,可以稍後用於打開和關閉事件綁定。事情是這樣的:

一個小的工作演示小提琴:http://jsfiddle.net/abhitalks/ba3zz4b9/5/

段:

/* Your config definition */ 
 
function config() { 
 
    this.settings = { 
 
     "enableEnter": false 
 
    }; 
 
    this.executeEnableEnter = function(e) { 
 
     if (e.keyCode == 13){ 
 
      $(this).next().focus(); 
 
     }; 
 
    }; 
 
} 
 

 
/* 
 
    Now you can define getter/setter for each of those settings properties. 
 
    Setter will use jQuery `.on` and `.off` to bind/unbind the relevant method, 
 
    depending on your use-case. Something like this: 
 
*/ 
 

 
Object.defineProperty(config.prototype, 'enableEnter', { 
 
    get: function() { return this.settings.enableEnter; }, 
 
    set: function(value) { 
 
     this.settings.enableEnter = value; 
 
     if (value) { 
 
      $("input").on("keypress", this.executeEnableEnter); 
 
     } else { 
 
      $("input").off("keypress", this.executeEnableEnter); 
 
     } 
 
    } 
 
}); 
 

 
/* 
 
    Now you can create your config object and use it. 
 
    For example, if you want to enable enter key behaviour on a checkbox state, 
 
    then you could: 
 
*/ 
 

 
var configObject = new config; 
 

 
$("#chk").on("change", function() { 
 
    if (this.checked) { configObject.enableEnter = true; } 
 
    else { configObject.enableEnter = false; } 
 
    
 
    $("#result").text("Enter key enabled = " + this.checked + ", Press enter on first input to focus the next."); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" /><input type="text" /><hr /> 
 
<input id="chk" type="checkbox" /><label for="chk">Enable/Disable Enter</label> 
 
<br /><p id="result"></p>

+0

嗚呼,這個作品裏儘管如此,還有一件事,我該如何在HTML腳本標記中調用設置? – Alin 2014-11-21 11:39:37

+0

我不明白。你只需要像這樣調用:'configObject.enableEnter = true;'沒有別的。 – Abhitalks 2014-11-21 11:41:09

+0

好吧,我標記爲答案和+1導致它很好地工作,但我嘗試'$(document).ready(function(){configObject.enableEnter = true;});'在我的HTML,它不會採取當然:) – Alin 2014-11-21 11:45:28

0

我發現這樣做的 「簡單」 的方法...

只需在標籤補充一點:

<script type="text/javascript"> 
    var enable_fade_in = true; 
</script> 

這在外部JS文件

$(function(){ 
settings={ 
    enableFadeIn:function() { 
     var self = this; 
     $(".me").click(function() { 
      $(".hidden").fadeIn(500); 
     }); 
    } 
} 

if (enable_fade_in) { 
    settings.enableFadeIn(); 
} 

});