Я пытаюсь скрыть Bootstrap Popover, когда пользователь щелкает где-нибудь вне popover. (Я действительно не знаю, почему создатели Bootstrap решили не предоставлять эту функциональность.)Скрытие Bootstrap Popover на Click Outside Popover
Я нашел следующий код on the web, но я действительно не понимаю.
// Hide popover on click anywhere on the document except itself
$(document).click(function(e) {
// Check for click on the popup itself
$('.popover').click(function() {
return false; // Do nothing
});
// Clicking on document other than popup then hide the popup
$('.pop').popover('hide');
});
Главное я считаю запутанным является линия $('.popover').click(function() { return false; });
. Разве эта строка не добавляет обработчик события для события click? Как это предотвращает вызов popover('hide')
, который следует из скрытия popover?
И кто-нибудь видел лучшую технику?
Примечание: Я знаю, что варианты этого вопроса заданы здесь раньше, но ответы на эти вопросы включают код более сложный, чем код выше. Так что мой вопрос действительно о выше
Прочтите это: http: // stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false – Icarus
@Icarus: Спасибо, но это действительно не отвечает на мой вопрос. Я знаю, что возврат false останавливает дальнейшую обработку, но как добавление обработчика кликов изменяет поведение следующей строки? И разве это не остановит клик от работы после закрытия popover? –
Этот код делает именно то, что вы описали. Каждый раз, когда кто-то щелкнет в любом месте документа (включая '.popover'), он добавит прослушиватель событий, который абсолютно ничего не делает. это просто пустая трата памяти, поскольку на одном и том же элементе может быть много прослушивателей событий, и они просто собираются друг на друга. – Dogoku