Kullanıcı kutu alanından başka bir sayfada herhangi bir yere tıklandığında, sayfadaki küçük bir pop-up kutusunu kapatmak istiyorum. nasıl bulunur?fare sayfadaki başka bir yere tıklayın (belirli bir div üzerinde değil)
12
A
cevap
17
$(document.body).click(function(e){
var $box = $('#little-pop-up-box-id');
if(e.target.id !== 'little-pop-up-box-id' && !$.contains($box[0], e.target))
$box.remove();
});
e.target
click event
alınan DOM node
olup. Bu elemanın ID
aradığımızı kontrol edip etmediğini kontrol ediyorum.
ikinci çek !$.contains($box[0], e.target)
DOM node of invocation
biz gizlemek istemiyor eleman dahilinde olduğundan, emin olur.
Eh, sanırım eklenti zamanı! :
(function($){
$.fn.outside = function(ename, cb){
return this.each(function(){
var $this = $(this),
self = this;
$(document.body).bind(ename, function tempo(e){
if(e.target !== self && !$.contains(self, e.target)){
cb.apply(self, [e]);
if(!self.parentNode) $(document.body).unbind(ename, tempo);
}
});
});
};
}(jQuery));
özet
$('#container').outside('click', function(e){
$(this).remove();
});
Örnek:
pop-up altında
0
Kepçe küresel tıklama etkinliği veya kurulum şeffaf div% 100 /% 100 Böyle bir olay ile kutu.
4
@ jAndy'nin çözümü iyi, ama ben de Ben Alman's "Outside Events" plugin'dan bahsetmek istedim. İşte bunu kullanarak hızlı bir örnek:
$("#popup").bind("clickoutside", function(event){
$(this).hide();
});
0
$("html").click(function(){
//close popup
});
İlgili konular
- 1. Başka bir DIV üzerinde bir DIV Float
- 2. Başka bir div üzerinde bir div yerleştirin
- 3. Başka bir DIV tıklandığında DIV rengini değiştirin
- 4. Başka bir sayfadaki sayfa nasıl yenilenir?
- 5. Başka bir sayfadaki belirli bir bölüme gitmek için bir bağlantı oluşturma
- 6. Komut İstemi Simulate Başka Bir Pencerede Tıklayın
- 7. Fare olayını JavaFX ile herhangi bir yere taşıyın
- 8. QTableView: Belirli bir hücre üzerinde kullanıcı tıklama fare
- 9. HtmlUnit kullanarak başka bir div içinde div nasıl bulunur?
- 10. Bir öğenin belirli bir koordinatına tıklayın
- 11. AJAX: Başka bir sayfadaki veriler nasıl görüntülenir
- 12. div merkezi bir başka iki div ise
- 13. jQuery slideYalnızca bir div üzerinde çalışabilir, başkaları değil, sadece
- 14. Highchart Başka bir Element'e (Div)
- 15. İşleme nasıl yazılır; "Fare ile bölgeye tıklayın".
- 16. bir göstermelidir üzerinde
- 17. Kaydırılabilir div içinde fare pozisyonu alın
- 18. capybara üzerinde vurgulu fare
- 19. TFS: Bir raf başka bir yere geri yüklenebilir mi?
- 20. Kopyala-yapıştırmak amacıyla başka bir sayfadaki bir sütuna eşleştirmek için bir sütundaki (başka birine göre) belirli değerleri nasıl seçerim?
- 21. Ebeveynin fare vurgusu üzerinde chid div göster - javascript gerektirir?
- 22. Açısal 2 - Bir bileşen, sayfadaki başka bir bileşenin yenilenmesini tetikliyor
- 23. Fare üzerinde daraltma satırını tıklatın
- 24. C# nasıl tetiklenir Sadece belirli bir konumda tıklayın
- 25. LaTeX hyperref paketi: Belirli bir sayfadaki bir hedef PDF'yi açma
- 26. Yakalama Sağ Tıklayın HTML DIV
- 27. Bir div alanını tıklanabilir hale getiriyor musunuz? Bütün div değil!
- 28. Bir ImageButton'dan satır dizisi almak bir GridView'a tıklayın
- 29. Etkinlik üzerinde bir fare işaretçisini nasıl kaplayacaksınız?
- 30. yeniden konumlandırmak div tıklama yere göre
Bu iyi bir çözümdür - gerçi sadece iki hızlı yorumlar. Yeniden sorgulamadan (ucuz bir sorgu da olsa) kaçınmak için tıklama işleyicisi dışındaki $ box değişkenini önbelleğe almak muhtemelen mantıklı olacaktır. Ve jQuery'nin 1.3.2+ sürümünü kullanıyorsanız,! $ (E.target) .closest ('# küçük-pop-up-box-id') uzunluğu, daha kısa ve özlü bir koşul olacaktır./nitpicking – jmar777
ACHHHH !! ÇOCUK ZİNCİRİ - BROKEN! (aksi halde ... tatlılık, +1). Ayrıca ... 'click' kelimesi, ename var ile değiştirilmeli mi? – jmar777
@ jmar777: doğru, düzeltildi: p. Ben de bir .unbind() 'ekledim. Sanırım bu birkaç yerde optimize edilebilir. Belki de .delegate() 'yi kullanmak için iyi bir fikir. FBI'ın Ben Alman'a kimin ihtiyacı var? :) j/k – jAndy