我在多個地方使用以下JS代碼;jQuery設置全局變量
$(this).attr("name")
我在不同的地方使用它;
var currentKey = $(this).attr("name");
currentKeyVal = retrievedUserDataObj[$(this).attr("name")];
currentKeyVal = UserDataObj[$(this).attr("name")];
現在我的問題是有可能以某種方式使它作爲全局變量,以便上述代碼不重複?
我不確定它是否因爲$(this)而變成gloabl?
編輯 實際/優化代碼;
function setFormFieldValues()
{
var currentKey,currentKeyVal;
if (supports_html5_storage())
{
var retrievedUserDataObj = JSON.parse(localStorage.getItem('UserDataObj'));
localStorageSupport = true;
}
$(".formFieldUserData").each(function(){
var $this = $(this);
currentKey = $this.attr("name");
currentKeyVal = UserDataObj[currentKey]; //Set with default values initially
if (localStorageSupport)
{
if(retrievedUserDataObj) //called when there are some values in localStorage
currentKeyVal = retrievedUserDataObj[currentKey];
}
else
{
if ($this.val() != "")
currentKeyVal = $this.val();
}
$("#"+currentKey).val(currentKeyVal); //Input text box
$("#"+currentKey+"Txt").html(currentKeyVal); // Form label
})
}
我想你可以這樣做'window.foo = $(this)'。但js中的'this'真的不同。我認爲你需要提供更多的上下文。 – jagttt 2013-03-10 14:52:35
鑑於'this'的上下文取決於代碼中的位置,將它變爲全局變量有什麼意義?這隻會在不太可能發生的情況下有意義,即this在任何情況下都指向*非常相同的元素。 – Boaz 2013-03-10 14:52:36