سؤال

أرغب ببساطة في إخفاء Div ، إذا فقد مربع نص يفقد التركيز ، ما لم ينقر المستخدم في Div آخر. إذا انقر المستخدم على هذا div ، فإن Focusout لا يؤدي إلى إخفاء Div.box.

فيما يلي رمز مع التعليق على الرمز الكاذب. أيه أفكار؟

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 (شوتوردي)

شوتورهيد منطقية تشير إلى ما إذا كان سيتم عرض العناصر أو إخفاءها. إذا كانت هذه المعلمة true, ، ثم المطابقة تظهر العناصر; ؛ إذا false, ، ال العناصر مخفية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top