Одним из способов было бы не называть die()
во-первых.Вместо этого вы можете сохранить состояние "clicked" в документе data и скрыть элемент в обработчике mouseleave
только в том случае, если это позволяет состояние "clicked".
EDIT: Исходя из требований вашего последнего комментария, похоже, что вы хотите, чтобы "щелкнутое" состояние сохранялось для каждого элемента, а не глобально (что означает, что die()
не был подходом, во-первых, потому чтоон освобождает обработчик глобально).
Надеемся, что следующий код удовлетворяет вашим требованиям:
$(".block").live("mouseenter", function() {
var $arrow = $("#arrowPreview" + this.id);
if (!$arrow.data("freeze")) {
$arrow.show();
}
}).live("mouseleave", function() {
var $arrow = $("#arrowPreview" + this.id);
if (!$arrow.data("freeze")) {
$arrow.hide();
}
}).live("click", function() {
var $arrow = $("#arrowPreview" + this.id);
$arrow.data("freeze", !$arrow.data("freeze"));
});