Что вы можете сделать, это назначить функцию click()
вашему телу.И в рамках этой функции проверьте, какой элемент был нажат точно.Если это не ваш выбор, закройте открытые.Иначе, откройте или закройте тот, который был нажат.
Позвольте мне уточнить это в некотором коде:
$(document).click(function(event) {
if (gui_currentSelectboxID != null) {
$this = $(event.target);
$parent = $this.parent().parent();
//Check if the clicked item was NOT the gui-selectbox option
if ($parent.attr('class') != 'gui-selectbox') {
$('#' + gui_currentSelectboxID).children('.gui-selectbox-dialog').fadeOut(100);
$('#' + gui_currentSelectboxID).children('.gui-selectbox-button').removeClass('active');
}
}
});
Это должно помочь:
http://jsfiddle.net/XR4Y3/5/
Вы все еще можете оптимизировать это, проверяя, действительно ли существует .parent().parent()
, потому что, например, у document
не будет двух родителей.Другая оптимизация состояла бы в том, чтобы использовать функции, которые вы фактически объявили, чтобы скрыть поля выбора и т.д ..