是否有可能恢復與this
相關的先前值?如何恢復以前的值(javascript)?
我正在創建一個動態菜單,對我來說是必要的......不幸的是,代碼太長,我不能把它帶回這裏或jsfiddle,但我創建了一個簡單的例子,你明白我的意思:
<div id="block-system-main-menu">
<ul>
<li><a href='#'>Mappe</a></li>
<li><a href='#'>Vulc</a></li>
<li><a href='#'>Equa</a></li>
</ul>
</div>
而且這裏的JS代碼:
$('#block-system-main-menu').on('click', 'li', function() {
if ($(this).children('a').text() != cliccato) {
$(this).append('<span> clicked</span>');
alert('not equal');
} else if ($(this).children('a').text() == cliccato) {
$(this).find('span').remove();
alert('equal');
}
//
var cliccato = $(this).children('a').text();
});
這裏的jsfiddle: http://jsfiddle.net/ve1cd5vx/
幾乎在第一時間點擊一個鏈接我添加了跨度,但是當我再次點擊相同的鏈接時,並沒有刪除跨度...
因此不工作else if
的js代碼...因爲變量cliccato
未定義,但如果有辦法恢復以前的值this
,它將全部解決..
(其他解決方案,已經證明如何創建變量,根據我的情況下的點擊次數更改值只會大大延長代碼)
謝謝並對不起我的英文
在你的jsfiddle'cliccato'是'undefined'所以'任何text'值點擊鏈接將永遠是不同吧(和第二支將不會被執行)。 嘗試使用一個類('.js-clicked'?),當點擊發生時,然後檢查是否存在這樣的類作爲'if'中的條件。 – MarcoL
另一個關於'if/else'塊的小問題是你不需要第二個'if',一個簡單的else就足夠了。 – MarcoL