Вопрос

Я просто хочу скрыть div, если текстовое поле теряет фокус, если только пользователь нажимает в другом определенном div. Если пользователь нажимает на этот конкретный div, то фокус не запускает shiv.box hidden.

Ниже приведен код с моим прокомментированием псевдокода. Есть идеи?

textInput.focusout(function() {
    // So long you didn't click div.stop, then
        $('div.box').hide();
});
Это было полезно?

Решение

var flag = false;

$('div.stop').click(function() {flag = true;});
textInput.focusout(function() {
    // So long you didn't click div.stop, then
    if(!flag)
        $('div.box').hide();
});

Если вы хотите избежать добавления переменной флаги, вы можете использовать jQuery's .данные хранить значение флага против, например, div.stop Элемент, например:

$('div.stop').click(function() {$(this).data('clicked', true);});

// ...

    if(!$('div.stop').data('clicked'))
// ...

РЕДАКТИРОВАТЬ

Если вы хотите разрешить ситуацию, когда текстовое поле имеет фокус, а затем вы нажимаете на div.stop, и вы не хотите, чтобы это скрыть, тогда вы можете попробовать что-то вроде:

$('div.stop').click(function() {$('div.box').stop();});
textInput.focusout(function() {
    // So long you didn't click div.stop, then
    $('div.box').delay(200).hide();
});

Другие советы

$(document).bind('click',function(e) {
  if ($(e.target).closest('div.box').length) return;
  $('div.box').hide();
});

Попробуй это!

var flag = false;
$('#inputID').blur(function(){
   $('div.box').toggle(flag);       
});

$('#someDIVid').click(function(){
    flag = true;
});

простое демонстрация

Добавлены примечания:

.toggle (ShoworHide)

витрина Логический, указывающий, показывают ли или скрывать элементы. Если этот параметр true, затем соответствовал Элементы показаны; если false, то Элементы скрыты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top