01/10/2018, 14:53

Xin giúp đỡ về lệnh Jquery

Các bạn giúp mình trường hợp này với ạ.

Mình có list danh sách các item, mỗi item lại có các list danh sách item con tương ứng. Mình muốn khi click vào 1 item bất kỳ, nếu item đó thỏa mãn bên trong nó có chứa danh sách item con thì mới cho hiện lệnh alert() còn không thì sẽ không được hiện. Mình có viết code Jquery bên dưới nhưng nó chạy chưa theo ý muốn.

Các bạn xem ở link này nhé:

CodePen

eMJXvo

...

Evil Artist viết 17:07 ngày 01/10/2018

Do sự kiện click đang bắt từ parent xuống đến sub-item.
VD: khi click Item1-1 thì mặc định Item1 cũng được click

Sửa lại: đưa hết text vào <span></span> và gọi sự kiện click với các span.
$(‘span:parent:has(.sub_menu)’)

Thinh Minh Ha viết 17:03 ngày 01/10/2018

Do sự kiện click đang bắt từ parent xuống đến sub-item.
VD: khi click Item1-1 thì mặc định Item1 cũng được click

Sửa lại: đưa hết text vào <span></span> và gọi sự kiện click với các span.
$(‘span:parent:has(.sub_menu)’)

Cám ơn bạn - cách của bạn rất hay ạ.

Tuy nhiên ở đây mình mới chỉ demo cho mọi người xem nên chỉ đưa tạm 1 ít dữ liệu chứ thực tế dữ liệu của mình nhiều hơn vậy. Nếu với mỗi cặp thẻ <li> lại phải lồng thêm 1 cặp thẻ <span> như vậy thì e là không tiện lắm.

Mong các bạn suy nghĩ giúp mình xem liệu có cách nào khả quan hơn không ạ !

Evil Artist viết 16:58 ngày 01/10/2018
$('li:has(".sub__menu")').click(function(e){
   e.stopPropagation();
  target = $(e.target);
   if(target.children().length > 0){
       console.log(target.children().text())
   }
});

Mình đabg ở cty nên k giải thích chi tiết dc. bạn tự tìm hiểu nha

Thinh Minh Ha viết 16:55 ngày 01/10/2018

Mình đabg ở cty nên k giải thích chi tiết dc. bạn tự tìm hiểu nha

Nó chạy ngon rồi. Tuyệt quá !!! Mình sẽ đọc và tìm hiểu Code của bạn.
Cảm ơn bạn nhiều ạ.

Bài liên quan
0