Back to Question Center
0

ເບິ່ງແບບທີ່ສົມບູນແບບທີ່ jQuery DOM Traversal            ເບິ່ງແບບທີ່ສົມບູນແບບທີ່ jQuery DOM Traversal ຫົວຂໍ້ຕໍ່ໄປນີ້: ReactjQueryRaw Semalt

1 answers:
ເບິ່ງແບບທີ່ສົມບູນແບບທີ່ jQuery DOM Traversal

A Comprehensive Look at jQuery DOM TraversalA Comprehensive Look at jQuery DOM TraversalRelated Topics:
ReactjQueryRaw Semalt

DOM traversal ຫມາຍຄວາມວ່າເມື່ອທ່ານເລືອກອົງປະກອບຫຼືອົງປະກອບໃນຫນ້າເວັບ, ທ່ານສາມາດຍ້າຍຜ່ານອົງປະກອບຫນ້າທີ່ກ່ຽວກັບການເລືອກເບື້ອງຕົ້ນຂອງທ່ານ. ໃນລະຫວ່າງຂະບວນການນີ້, ທ່ານສາມາດປ່ຽນແທນການເລືອກຕົ້ນສະບັບດ້ວຍໃຫມ່ຫຼືເພີ່ມແລະລຶບອົງປະກອບຈາກມັນ.

ໃນບົດຄວາມນີ້ພວກເຮົາຈະເບິ່ງວິທີການທີ່ມີຢູ່ສໍາລັບ jSemalt DOM traversal, ແລະເບິ່ງວ່າວິທີການສະຫນອງຫໍສະຫມຸດໃຫ້ຫຼາຍໆວິທີສໍາລັບພວກເຮົາໄດ້ງ່າຍໃນການເລືອກເອົາອົງປະກອບຕາມຄວາມສໍາພັນຂອງພວກເຂົາກັບອົງປະກອບອື່ນໆໃນຫນ້າ - uhren vertriebsleitung.

ອົງປະກອບການກັ່ນຕອງ

Semalt ເລີ່ມຕົ້ນໂດຍການຊອກຫາວິທີການກັ່ນຕອງການຄັດເລືອກລົງກັບສິ່ງທີ່ສະເພາະໃດຫນຶ່ງ. ທ່ານສາມາດກັ່ນຕອງອົງປະກອບຕາມເງື່ອນໄຂຫຼາຍຢ່າງເຊັ່ນຕໍາແຫນ່ງຂອງພວກເຂົາກ່ຽວກັບອົງປະກອບອື່ນໆແລະບໍ່ວ່າຈະເປັນພວກເຂົາມີລະດັບສະເພາະ. ສ່ວນໃຫຍ່ຂອງທີ່ໃຊ້ເວລາ, ທ່ານຈະສິ້ນສຸດດ້ວຍອົງປະກອບທີ່ຫນ້ອຍກວ່າທີ່ທ່ານເລືອກທີ່ຈະເລີ່ມຕົ້ນ.

ນີ້ແມ່ນບັນຊີລາຍຊື່ຂອງວິທີການກັ່ນຕອງທີ່ແຕກຕ່າງກັນ:

  • eq - ວິທີນີ້ຫຼຸດຜ່ອນຊຸດຂອງອົງປະກອບທີ່ສົມທຽບກັບຫນຶ່ງທີ່ຢູ່ໃນດັດຊະນີທີ່ທ່ານກໍານົດ. ດັດສະນີແມ່ນສູນໂດຍອີງໃສ່. ດັ່ງນັ້ນ, ເພື່ອເລືອກອົງປະກອບທໍາອິດ, ທ່ານຈະຕ້ອງໃຊ້ $ ("ຕົວເລືອກ"). eq ເລີ່ມຕົ້ນດ້ວຍຮຸ່ນ 1 4, ທ່ານສາມາດສະເຫນີຈໍານວນເຕັມທີ່ເພື່ອເລີ່ມຕົ້ນການນັບສ່ວນປະກອບຈາກປາຍທີ່ບໍ່ແມ່ນຈຸດເລີ່ມຕົ້ນ.

  • ຄັ້ງທໍາອິດແລະສຸດທ້າຍ - ວິທີການ ທໍາອິດ ຈະກັບຄືນມາພຽງແຕ່ອົງປະກອບທໍາອິດຈາກຊຸດຂອງອົງປະກອບທີ່ຈັບຄູ່ໃນຂະນະທີ່ ສຸດທ້າຍ ຈະກັບຄືນມາອົງປະກອບສຸດທ້າຍຈາກຊຸດຂອງອົງປະກອບທີ່ຖືກຕ້ອງ. ທັງສອງວິທີເຫຼົ່ານີ້ບໍ່ຍອມຮັບການໂຕ້ຖຽງໃດໆ.

  • slice - ຖ້າທ່ານກໍາລັງຊອກຫາອົງປະກອບທັງຫມົດໃນຊຸດທີ່ມີດັດຊະນີພາຍໃນຂອບເຂດທີ່ກໍານົດໄວ້, ທ່ານສາມາດໃຊ້ slice . ວິທີນີ້ຍອມຮັບການໂຕ້ຖຽງສອງຢ່າງ. ຫນຶ່ງຄັ້ງທໍາອິດກໍານົດດັດຊະນີເລີ່ມຕົ້ນທີ່ວິທີການຄວນຈະເລີ່ມຕົ້ນ slicing ແລະການໂຕ້ຖຽງທີ່ສອງກໍານົດດັດຊະນີທີ່ການເລືອກຈະສິ້ນສຸດ. ການໂຕ້ຖຽງທີສອງແມ່ນທາງເລືອກແລະຖ້າຫາກວ່າຜົນໄດ້ຮັບການສູນເສຍໃນການຄັດເລືອກຂອງອົງປະກອບທັງຫມົດທີ່ມີດັດສະນີທີ່ສູງກວ່າຫລືເທົ່າກັບ ເລີ່ມຕົ້ນ .

    ເບິ່ງວິທີການ Pen eq ແລະ slice ໂດຍ SitePoint (@ ສະຖານທີ່) ເທິງ CodePen.

  • - ວິທີການນີ້ຈະຊ່ວຍຫຼຸດຜ່ອນຊຸດຂອງອົງປະກອບຂອງທ່ານກັບສິ່ງທີ່ກົງກັບຕົວເລືອກຫຼືຜ່ານເງື່ອນໄຂທີ່ທ່ານກໍານົດໄວ້ໃນຫນ້າທີ່ທີ່ຖືກສົ່ງໄປຫາວິທີນີ້. ນີ້ແມ່ນຕົວຢ່າງຫນຶ່ງຂອງວິທີນີ້ທີ່ມີຕົວເລືອກ:

         $ ("li") ການກັ່ນຕອງ (": ແມ້ແຕ່"). css ("font-weight", "bold");    

    ທ່ານຍັງສາມາດເລືອກເອົາອົງປະກອບດຽວກັນໂດຍໃຊ້ຫນ້າທີ່:

         $ ("li") ຕົວກອງ (function (index) {return index% 2 === 0}) css ("font-weight", "bold");    

    ທ່ານຍັງສາມາດໃຊ້ຟັງຊັນເພື່ອປະຕິບັດການເລືອກທີ່ສັບສົນຫຼາຍເຊັ່ນ:

         ຕົວກອງ (function (index) {ຄືນ $ ("span", ນີ້). ຄວາມຍາວ> = 2})    

    ນີ້ຈະມີພຽງແຕ່ອົງປະກອບທີ່ເລືອກທີ່ມີເວລາຢ່າງຫນ້ອຍສອງ ປ້າຍ .

    ເບິ່ງວິທີກອງ Filter Pen ໂດຍ SitePoint (@SitePoint) ເທິງ CodePen.

  • ແຜນທີ່ - ທ່ານສາມາດໃຊ້ວິທີນີ້ເພື່ອຜ່ານແຕ່ລະອົງປະກອບໃນການຄັດເລືອກປັດຈຸບັນຂອງທ່ານຜ່ານຫນ້າທີ່, ໃນທີ່ສຸດກໍ່ສ້າງ jQuery ໃຫມ່ທີ່ມີຄຸນຄ່າກັບ. ວັດຖຸ jQuery ທີ່ຖືກສົ່ງກັບຕົວມັນເອງມີອາເລແລະທ່ານສາມາດໃຊ້ວິທີການ ເພື່ອເຮັດວຽກກັບອາເລພື້ນຖານ.

    ເບິ່ງວິທີແຜນທີ່ Pen ໂດຍ SitePoint (@ ສະຖານທີ່) ໃນ CodePen.

ຂ້າມ DOM

ພິຈາລະນາສະຖານະການທີ່ທ່ານຮູ້ຕົວເລືອກທີ່ທ່ານສາມາດໃຊ້ເພື່ອເຂົ້າເຖິງອົງປະກອບຕ່າງໆແຕ່ທ່ານຕ້ອງເຮັດວຽກຮ່ວມກັບພໍ່ແມ່ຂອງອົງປະກອບທັງຫມົດ. Semalt, ພໍ່ແມ່ບໍ່ມີຊັ້ນຮຽນໃດໆຫຼືປ້າຍໂຄສະນາທີ່ເປັນປະໂຫຍດແກ່ພວກເຂົາທັງຫມົດ. ຂ້າພະເຈົ້າໄດ້ປະສົບກັບສະຖານະການທີ່ຄ້າຍຄືກັນຫຼາຍກວ່າສອງສາມຄັ້ງ.

jQuery ໃຫ້ຫຼາຍວິທີທີ່ເປັນປະໂຫຍດເພື່ອເຂົ້າຫາພໍ່ແມ່, ເດັກນ້ອຍຫຼືອ້າຍນ້ອງໃນກໍລະນີດັ່ງກ່າວ. ການທໍາລາຍມົນລະພິດຂອງພວກເຂົາທັງຫມົດແມ່ນຫນຶ່ງໃນຫນຶ່ງ:

  • ເດັກ - ວິທີນີ້ຊ່ວຍໃຫ້ພວກເຮົາໄດ້ຮັບເດັກນ້ອຍຂອງແຕ່ລະອົງປະກອບໃນຊຸດຂອງພວກເຮົາ. ເດັກນ້ອຍ Semalt ສາມາດໄດ້ຮັບການກັ່ນຕອງໂດຍຕົວເລືອກ.

  • ຊອກຫາ - ວິທີນີ້ຈະໄດ້ຮັບລູກຫລານຂອງແຕ່ລະອົງປະກອບທີ່ກໍານົດໄວ້ໃນຊຸດຂອງອົງປະກອບທີ່ຖືກກັ່ນຕອງທີ່ຖືກກັ່ນຕອງໂດຍຕົວເລືອກຫຼືອົງປະກອບ. ໃນກໍລະນີນີ້, ການໂຕ້ຖຽງ selector ຜ່ານໄປຫາ find ບໍ່ແມ່ນທາງເລືອກ. ຖ້າທ່ານຕ້ອງການໃຫ້ລູກຫລານທັງຫມົດ, ທ່ານສາມາດຜ່ານຕົວເລືອກທົ່ວໄປ ( '*' ) ເປັນການໂຕ້ຖຽງກັບວິທີນີ້.

    ເດັກນ້ອຍ ພຽງແຕ່ເນັ້ນຫນັກເຖິງເດັກໂດຍກົງຂອງວັກຂອງພວກເຮົາແຕ່ວ່າ ຊອກຫາ ເພີ່ມພື້ນຖານໃຫ້ກັບລູກຫລານທັງຫມົດຂອງມັນດ້ວຍຕົວເລືອກທີ່ເຫມາະສົມ.

    Demo

  • ພໍ່ແມ່ - ວິທີນີ້ຈະໄດ້ຮັບພໍ່ແມ່ຂອງແຕ່ລະອົງປະກອບໃນຊຸດປະຈຸບັນ. ພໍ່ແມ່ສາມາດໄດ້ຮັບການກັ່ນຕອງໂດຍເລືອກຕົວເລືອກ.

  • ພໍ່ແມ່ - ວິທີນີ້ຈະໄດ້ບັນພະບຸລຸດທັງຫມົດສໍາລັບແຕ່ລະອົງປະກອບໃນຊຸດຂອງທ່ານ. ມັນຍັງຍອມຮັບການໂຕ້ຖຽງ selector ທາງເລືອກເພື່ອການກັ່ນຕອງບັນພະບູລຸດ. ຄວາມແຕກຕ່າງລະຫວ່າງພໍ່ແມ່ ແລະ ແມ່ນວ່າຕົວຢ່າງຫນຶ່ງຜ່ານແຕ່ລະຊັ້ນດຽວໃນຕົ້ນໄມ້ DOM ໃນຂະນະທີ່ ພໍ່ແມ່ ໄປທັງຫມົດ ວິທີການເຖິງຮາກຂອງເອກະສານ.

  • closest - ວິທີນີ້ຈະໄດ້ຮັບອົງປະກອບທໍາອິດທີ່ກົງກັບຕົວເລືອກທີ່ໄດ້ຮັບໂດຍການທົດສອບອົງປະກອບຂອງມັນເອງແລະຫຼັງຈາກນັ້ນ traversing ຂຶ້ນໃນຕົ້ນໄມ້ DOM. ມີຄວາມແຕກຕ່າງທີ່ສໍາຄັນສອງລະຫວ່າງ ພໍ່ແມ່ ແລະ ທີ່ສຸດ . ໃນຂະນະທີ່ ພໍ່ແມ່ ເລີ່ມຕົ້ນຈາກພໍ່ແມ່ຂອງອົງປະກອບ, closest ເລີ່ມຕົ້ນຈາກສ່ວນຂອງມັນເອງ. ຄວາມແຕກຕ່າງກັນອີກແມ່ນວ່າ ໃກ້ໆ ເທົ່ານັ້ນຈະຜ່ານໄມ້ DOM ຈົນກ່ວາມັນພົບການຈັບຄູ່ໃນຂະນະທີ່ ພໍ່ແມ່ ຈະສືບຕໍ່ຍ້າຍຂຶ້ນຈົນກວ່າມັນຈະມາເຖິງອົງປະກອບຮາກຂອງເອກະສານ.

    ການປະຖິ້ມລະຫັດສອງລະຫັດນີ້ມາຈາກຕົວຢ່າງຕໍ່ໄປນີ້:

         $ ("i") closest ("span"). css ("ພື້ນຫລັງ", "ສີເຫຼືອງ");$ ("b"). ພໍ່ແມ່   . css ("ສີ", "ສີຟ້າ");    

    ຕອນນີ້ສັງເກດວ່າຄໍາວ່າ "italic" ໃນວັກທ້າຍບໍ່ມີບັນພະບຸລຸດທີ່ມີ . ດັ່ງນັ້ນ, ພື້ນຖານຂອງມັນບໍ່ປ່ຽນແປງ.

    ເຊັ່ນດຽວກັນ, ເສັ້ນທີສອງປ່ຽນສີຂອງຄໍາສັບຕ່າງໆ ທີ່ຫຍໍ້ຄໍາທີ່ກ້າຫານຂອງພວກເຮົາໃຫ້ເປັນສີຟ້າ. ໃນປັດຈຸບັນ, ໃນກໍລະນີສຸດທ້າຍ, ວັກທັງຫມົດແມ່ນພໍ່ແມ່ຂອງ ແລະດັ່ງນັ້ນມັນທັງຫມົດປ່ຽນເປັນສີຟ້າ.

    Demo

  • ອ້າຍນ້ອງ - ວິທີການນີ້ໄດ້ຮັບການອ້າຍນ້ອງຂອງແຕ່ລະອົງປະກອບໃນຊຸດຂອງອົງປະກອບທີ່ສົມທຽບ. ທ່ານສາມາດເລືອກຕົວເລືອກເປັນການໂຕ້ຖຽງເພື່ອໃຫ້ທ່ານໄດ້ຮັບອ້າຍນ້ອງດ້ວຍຕົວເລືອກທີ່ເຫມາະສົມເທົ່ານັ້ນ.

  • prev - ວິທີການນີ້ຈະໄດ້ຮັບການອ້າຍນ້ອງກ່ອນຫນ້ານັ້ນຂອງແຕ່ລະອົງປະກອບໃນຊຸດຂອງພວກເຮົາ. ຖ້າທ່ານໄດ້ສະຫນອງຕົວເລືອກ, ວິທີການຈະເລືອກເອົາອົງປະກອບຖ້າຫາກວ່າມັນເທົ່ານັ້ນທີ່ເລືອກ.

  • prevAll - ວິທີນີ້ຈະໄດ້ຮັບທັງຫມົດຂອງອ້າຍນ້ອງກ່ອນຫນ້າຂອງແຕ່ລະອົງປະກອບໃນຊຸດຂອງພວກເຮົາ. ເຊັ່ນດຽວກັນກັບວິທີການອື່ນໆ, ທ່ານສາມາດສະຫນອງຕົວເລືອກເພື່ອກັ່ນຕອງອົງປະກອບທີ່ສົ່ງຄືນ.

  • ຕໍ່ໄປ - ວິທີການນີ້ຈະໄດ້ຮັບການຕໍ່ໄປນີ້ເທົ່າເດີມຂອງອົງປະກອບທີ່ຖືກຕ້ອງ. ຖ້າມີການເລືອກເອົາຕົວເລືອກ, ມັນຈະໄດ້ຮັບການອ້າຍນ້ອງເທົ່ານັ້ນຫາກມັນສອດຄ້ອງກັນ.

  • ຕໍ່ໄປທັງຫມົດ - ວິທີການນີ້ຈະໄດ້ຮັບການອ້າຍນ້ອງທັງຫມົດທີ່ເປັນຜູ້ສືບທອດຂອງອົງປະກອບໃນຊຸດຂອງພວກເຮົາ. ອ້າຍນ້ອງສາມາດໄດ້ຮັບການກັ່ນຕອງທາງເລືອກໂດຍໃຫ້ຕົວເລືອກ.

    ການຖິ້ມລະຫັດສອງລະຫັດນີ້ມາຈາກຕົວຢ່າງ:

         $ ("ຕົວເລືອກ"). next ("nextall"). css ("ສີ", "ສີສົ້ມ");$ ("ຕົວເລືອກ"). nextAll ("nextall"). ນັ້ນແມ່ນຍ້ອນວ່າອ້າຍນ້ອງໃນທັນທີຕໍ່ໄປຂອງລາຍການເອກະສານຂອງພວກເຮົາບໍ່ມີ    nextall   .  

    ເບິ່ງ Pen ຕໍ່ໄປ, ຕໍ່ໄປທັງຫມົດ, ກ່ອນຫນ້າແລະກ່ອນຫນ້າທັງຫມົດໃນ jQuery ໂດຍ SitePoint (@ ສະຖານທີ່) ເທິງ CodePen.

    ຂ້າພະເຈົ້າຢາກກ່າວອີກເທື່ອຫນຶ່ງວ່າເມື່ອທ່ານໃຫ້ຜູ້ຄັດເລືອກກັບ ຕໍ່ໄປ ແລະ prev , ພວກເຂົາຈະບໍ່ຊອກຫາອ້າຍນ້ອງຕໍ່ໄປແລະກ່ອນຫນ້າເພື່ອຊອກຫາ ຄັ້ງທໍາອິດທີ່ກົງກັບຕົວເລືອກທີ່ໄດ້ຮັບ. ພວກເຂົາຈະເບິ່ງຢູ່ໃນອ້າຍນ້ອງກ່ອນແລະຕໍ່ໄປນີ້ແລະຖ້າພວກອ້າຍນ້ອງເຫຼົ່ານັ້ນບໍ່ມີຕົວເລືອກທີ່ເຫມາະສົມ, ສິ່ງທີ່ jQuery ເປົ່າຈະຖືກສົ່ງຄືນ.

ວິທີການເພີ່ມເຕີມກ່ຽວກັບ DOM Traversal

ໃນເວລາຜ່ານ DOM, ທ່ານອາດຈະປະເຊີນກັບສະຖານະການທີ່ທ່ານຕ້ອງການເພີ່ມອົງປະກອບເພີ່ມເຕີມໃນການຄັດເລືອກຂອງທ່ານທີ່ບໍ່ກ່ຽວຂ້ອງກັບຊຸດຕົ້ນສະບັບຂອງທ່ານ, ຫຼືທ່ານຕ້ອງກັບຄືນມາກັບຊຸດຂອງທ່ານກ່ອນຫນ້ານີ້. jSemalt ສະຫນອງຫນ້າທີ່ຈໍານວນຫນ້ອຍທີ່ທ່ານສາມາດໃຊ້ເພື່ອປະຕິບັດວຽກງານເຫຼົ່ານີ້ທັງຫມົດ.

  • ເພີ່ມ - ວິທີນີ້ຈະສ້າງຈຸດ jQuery ໃຫມ່ທີ່ຈະມີອົງປະກອບໃຫມ່ຂອງພວກເຮົາເພີ່ມເຂົ້າໃນບັນຊີລາຍຊື່ທີ່ມີຢູ່. ຈື່ໄວ້ວ່າບໍ່ມີການຮັບປະກັນວ່າອົງປະກອບໃຫມ່ຈະຖືກຕິດກັບການເກັບກໍາທີ່ມີຢູ່ຂອງທ່ານໃນຄໍາສັ່ງທີ່ພວກເຂົາໄດ້ຖືກສົ່ງໄປຫາ ເພີ່ມ ວິທີການ.

  • addBack - jQuery ຮັກສາ stack ພາຍໃນທີ່ມັນໃຊ້ເພື່ອຕິດຕາມການປ່ຽນແປງຂອງຊຸດຂອງອົງປະກອບຂອງທ່ານ. ການໂທຫາໃດໆຂອງວິທີການ traversal pushes ຊຸດໃຫມ່ຂອງອົງປະກອບໃນ stack ວ່າ. ຖ້າທ່ານຕ້ອງການທີ່ຈະເຮັດວຽກກັບທັງສອງຊຸດກ່ອນຫນ້ານີ້ແລະໃຫມ່, ທ່ານສາມາດໃຊ້ addBack ວິທີການ.

    ສໍາລັບກໍລະນີທໍາອິດພາຍໃຕ້ສ່ວນ addBack , ພວກເຮົາເລີ່ມຕົ້ນໂດຍການເລືອກວັກແລະຫຼັງຈາກນັ້ນໂທຫາ ເດັກ . ໃນກໍລະນີທີສອງ, ຫຼັງຈາກໂທ ເດັກ ພວກເຮົາຍັງໂທຫາ addBack . ການໂທ addBack ເພີ່ມວັກສອງໃນການເລືອກຂອງພວກເຮົາແລະຫຼັງຈາກນັ້ນນໍາໃຊ້ຂອບເຂດສີແດງກັບມັນ.

    ເບິ່ງ pen ເພີ່ມແລະ addBack ໃນ jQuery ໂດຍ SitePoint (@ ສະຖານທີ່) ເທິງ CodePen.

  • end - ວິທີນີ້ຈະສິ້ນສຸດການດໍາເນີນງານການກັ່ນຕອງທີ່ຜ່ານມາທີ່ສຸດແລະສົ່ງກັບຊຸດຂອງອົງປະກອບຂອງທ່ານກັບສະຖານະທີ່ຜ່ານມາຂອງມັນ. ມັນສາມາດເປັນປະໂຫຍດໃນສະຖານະການທີ່ທ່ານຕ້ອງການຈັດການກັບບາງອົງປະກອບທີ່ກ່ຽວຂ້ອງກັບຊຸດປັດຈຸບັນຂອງທ່ານ, ກັບຄືນໄປຫາຊຸດຕົ້ນສະບັບຂອງທ່ານແລະຫຼັງຈາກນັ້ນນໍາໃຊ້ຊຸດທີ່ແຕກຕ່າງກັນ.

    ໃນການສາທິດລຸ່ມນີ້ຂ້າພະເຈົ້າເລີ່ມຕົ້ນໂດຍໃຊ້ . ຄົ້ນຫາ ("b") ເພື່ອຄັດເລືອກເອົາທັງຫມົດ tags ແລະຫຼັງຈາກນັ້ນຂ້ອຍໄດ້ປ່ຽນສີຂອງມັນໃຫ້ສີຂຽວຂ້ອຍເອີ້ນ . end ສາຍນີ້ຈະສົ່ງຄືນພວກເຮົາໄປທີ່ການຄັດເລືອກທີ່ຜ່ານມາຂອງພວກເຮົາຈາກບ່ອນທີ່ຂ້ອຍອີກຄັ້ງເລືອກເອົາ tags.

    Demo

  • ເນື້ອຫາ - ຖ້າທ່ານຕ້ອງການໃຫ້ເດັກທັງຫມົດລວມທັງຂໍ້ຄວາມແລະຂໍ້ຄິດເຫັນຂອງທຸກອົງປະກອບໃນຊຸດຂອງທ່ານ, ທ່ານສາມາດໃຊ້ວິທີການ . ນອກນັ້ນທ່ານຍັງສາມາດໃຊ້ວິທີການນີ້ເພື່ອໃຫ້ເນື້ອຫາຂອງ

March 1, 2018