我有一個熱點影像的東西,您可以在影像上懸停可點擊的點(稱為“專案”)。當您單擊此類專案時,影像右側會出現一個包含所有資訊的文本框。現在,如果您單擊另一個專案,文本框應該關閉并打開一個新專案。
這是當前代碼:
jQuery(document).ready(function() {
counter = 1;
var lastHotspot = 0;
jQuery("#{{item.item_id}}").click(function(){
if (counter == 1) {
jQuery("#textbox{{item.item_id}}").show();
lastHotspot = {{item.item_id}};
counter ;
} else {
jQuery("#textbox" lastHotspot).hide();
jQuery("#textbox{{item.item_id}}").show();
lastHotspot = {{item.item_id}};
}
});
});
因為第一次加載所有內容時沒有文本框,所以我想在您第一次單擊專案時在文本框中運行“.show”,然后存盤專案的 ID。之后,當我單擊一個專案時,它應該“隱藏”前一個專案的文本框,然后“顯示”單擊專案的下一個文本框,然后將專案 ID 重新分配給“lastHotspot”,然后重復每次點擊一個專案。
我遇到的問題是,在 if 函式內部重新分配后,“lastHotspot”不會存盤在變數中,即使計數器也是如此。我該如何解決這個問題?
uj5u.com熱心網友回復:
您可以在將函式附加到單擊事件之前系結函式,也可以使用全域物件來修改計數器:
jQuery(document).ready(function() {
counter = 1;
var lastHotspot = 0;
jQuery("#{{item.item_id}}").click((function(){
if (counter == 1) {
jQuery("#textbox{{item.item_id}}").show();
lastHotspot = {{item.item_id}};
counter ;
} else {
jQuery("#textbox" lastHotspot).hide();
jQuery("#textbox{{item.item_id}}").show();
lastHotspot = {{item.item_id}};
}
}).bind(this));
});
使用全域物件:
jQuery(document).ready(function() {
configs = { counter: 1 };
var lastHotspot = 0;
jQuery("#{{item.item_id}}").click(function(){
if (configs.counter == 1) {
jQuery("#textbox{{item.item_id}}").show();
lastHotspot = {{item.item_id}};
configs.counter ;
} else {
<...>
}
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/455101.html
標籤:javascript jQuery
下一篇:基于影像區域的jQuery函式
