2010-06-03 41 views
4

短版的問題:看到標題如何重寫jQuery的顯示()和隱藏()函數

問題的長版:在我的代碼 我使用jQuery的顯示()和隱藏()函數廣泛和剛剛遇到了一些問題:他們通過將元素的顯示屬性分別更改爲'block'或'none'來工作,以便如果您有事件顯示:內聯,然後隱藏並顯示它,則您已更改它的顯示屏會阻止,這會在一些情況下將佈局擰緊。

在我的代碼中,無論何時我想隱藏起初我給它隱藏的類。這個類只是{display:none}。我希望更改顯示和隱藏以刪除或添加此類,而不是直接更改顯示屬性,以便如果添加隱藏的類然後再次刪除它(即隱藏和顯示某些內容),則返回到原來的方式它是從開始(因爲添加一個類覆蓋了屬性而不是直接改變它們)。像這樣的東西(這是一個小pseucodey,因爲我不知道如何正確設置的功能了 - 讓我們假設「這個」是顯示/隱藏被稱爲物體)

function show(){ 
    this.removeClass("hidden"); 
} 

function hide(){ 
    this.addClass("hidden"); 
} 

如何以及在何處我會重寫jquery方法嗎? (我不是一個JavaScript專家)

感謝 - 最大

+0

在'.hide()'jQuery的商店以前的顯示值,'.show()'恢復它,它不會使它「阻止」......如果是這樣的話,你還有其他事情正在發生。 – 2010-06-03 13:52:39

+0

哦,真的嗎?它如何存儲它? 謝謝,我會調查。 – 2010-06-04 14:14:59

回答

10

我不會重寫jQuery的方法時,你可以創建自己的。重寫很可能會導致插件中的意外行爲。

jQuery已經有一個名爲toggleClass()的方法,它似乎適合你要找的東西。

$someElement.toggleClass('hidden'); 

文檔:http://api.jquery.com/toggleClass/


編輯:

但是,爲了回答您的具體問題,重寫一個jQuery的方法,你會做這樣的事情:

jQuery.fn.show = function() { 
    // Your custom code 
} 

或者創建一個自定義方法:

jQuery.fn.customMethod = function() { 
    // Your custom code 
} 

之前這樣做,這將是一個好主意,這個文件請教:

http://docs.jquery.com/Plugins/Authoring

+0

太棒了 - 感謝帕特里克。出於安全原因,我已經決定不會因爲發生而重寫。但知道如何很好。我會閱讀該鏈接。乾杯 – 2010-06-04 14:16:05