01/10/2018, 17:01

Chuyển code js sang jquery

Em có đoạn code js như thế này.

var modal = document.getElementById('myModal');
window.onclick = function(event) {
    if (event.target == modal) {
        modal.style.display = "none";
    }
}

Và e thử viết lại đoạn này theo jquery như thế này:

    $(window).click((event)=>{
            if(event.target == $('#myModal')){
                $('#myModal').css('display','none')
            }
    })

Cho em hỏi là đoạn Jquery của em sai chổ nào ạ.

realx viết 19:12 ngày 01/10/2018

Sai ở chỗ if

event.target nó khác ('#myModal')

Một là $(event.target) == $('#myModal')
Không thì

 $(#myModal).click((event)=>{
    $('#myModal').css('display','none')
   // $(event.target).css('display','none')
})
Đoàn Trọng Hiếu viết 19:10 ngày 01/10/2018

Bạn debug xem nó sai chỗ nào =))
Ý tưởng bài thì không sai nhưng chắc là sai cú pháp gì/ thuộc tính đó :v
Hoặc bạn có thể code lại theo ý tưởng sau :

Jquery click vào element có id là ‘myModal’ thì set display = none. ( Không liên quan gì đến window nữa)

Ngoài ra, jquery có phương thức hide() để ẩn element, bạn có thể tham khảo

Lam Pham viết 19:06 ngày 01/10/2018

Sai ở chỗ if:

  • event.target là DOM, tương ứng với modal phía trên
  • $(’#myModal’) là jQuery Object - nó là wrapper của DOM

Trong trường hợp này bạn có thể sửa đoạn so sánh trên thành:

if(event.target == $('#myModal')[0])
Lê Quý Nguyên viết 19:10 ngày 01/10/2018

cảm ơn anh nhiều nha

Mason Ha viết 19:12 ngày 01/10/2018

Có vẻ như bạn đang muốn check nếu người dùng click ra ngoài modal thì ẩn modal.

b tham khảo đoạn code này nhé
http://jsfiddle.net/tedp/aL7Xe/1/

Bài liên quan
0