jQuery Focusout باستثناء إذا
-
04-10-2019 - |
سؤال
أرغب ببساطة في إخفاء 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
, ، ال العناصر مخفية.
لا تنتمي إلى StackOverflow