รับประเภทองค์ประกอบด้วย jQuery


308

เป็นไปได้หรือไม่ที่ใช้ jQuery เพื่อค้นหาประเภทขององค์ประกอบด้วย jQuery ตัวอย่างเช่นองค์ประกอบคือ div, span, select หรือ input หรือไม่

ตัวอย่างเช่นถ้าฉันกำลังพยายามโหลดค่าลงในรายการแบบหล่นลงด้วย jQuery แต่สคริปต์เดียวกันสามารถสร้างรหัสลงในชุดของปุ่มตัวเลือกฉันสามารถสร้างสิ่งที่ชอบ:

$('.trigger').live('click', function () {
   var elementType = $(this).prev().attr(WHAT IS IT);
});

ให้ลิสต์แบบดรอปดาวน์ด้วยปุ่มถัดจากคลาสทริกเกอร์elementTypeตัวแปรของฉันควรกลับselectไปที่ปุ่มที่ถูกกด


คุณสามารถใช้ถ้อยคำใหม่ได้หรือไม่ คุณหมายถึงอะไรตามประเภทองค์ประกอบ?
Abdul Munim


มีความเป็นไปได้ที่ซ้ำกันในการค้นหาประเภทขององค์ประกอบโดยใช้ jQuery
Felix Kling

คำตอบ:


558

รับองค์ประกอบพิมพ์วิธี jQuery:

var elementType = $(this).prev().prop('nodeName');

ทำเช่นเดียวกันโดยไม่ต้อง jQuery

var elementType = this.previousSibling.nodeName;

การตรวจสอบประเภทองค์ประกอบเฉพาะ:

var is_element_input = $(this).prev().is("input"); //true or false

16
เพิ่งทราบว่ามีการเพิ่มฟังก์ชั่น. prop () ใน jQuery 1.6 - คุณอาจต้องอัพเกรดรุ่นที่คุณใช้!
xgretsch

ไม่ได้ทำงานกับ jQuery 1.3.2 รุ่นเก่าดังนั้นอัปเกรดเป็นรุ่นล่าสุดและใช้งานได้ดี
Damodar Bashyal

2
ซึ่งอาจจะดีขึ้นโดยการเปลี่ยน 'tagname' ถึง 'NodeName' เป็นที่กล่าวถึงที่นี่
Kyle Stoflet

1
@KyleStoflet - ดูเหมือนว่าคุณกำลังขวา, nodeNameไม่สนับสนุนประเภทขององค์ประกอบและการสนับสนุน IE5.5 ไม่ควรจะมีปัญหาใด ๆ เพิ่มเติมเพื่อให้ฉันเห็นปัญหาใด ๆ กับการเปลี่ยนแปลงtagNameไปnodeNameในคำตอบดังกล่าวข้างต้น ทั้งสองจะทำงานได้ดีสำหรับองค์ประกอบและหลังจะทำงานกับ textnodes คุณลักษณะอื่น ๆ เช่นกัน
adeneo

3
ใช้งานได้ แต่ฉันสับสนเล็กน้อยโดย prev () ซึ่งเฉพาะสำหรับโค้ดตัวอย่างที่เป็นปัญหา โดยทั่วไป$(this).is("input");
Fanky


26

คุณควรใช้tagNameคุณสมบัติและattr('type')สำหรับอินพุต


ตัวอย่างจะทำให้ความคิดเห็นนี้แข็งแกร่งขึ้น
Justapigeon

16

ดังที่ Distdev พูดถึงคุณยังคงต้องแยกความแตกต่างของประเภทอินพุต กล่าวคือ,

$(this).prev().prop('tagName');

จะบอกคุณinputแต่นั่นไม่ได้แยกความแตกต่างระหว่างช่องทำเครื่องหมาย / ข้อความ / วิทยุ หากเป็นอินพุตคุณสามารถใช้

$('#elementId').attr('type');

เพื่อบอกให้คุณทำเครื่องหมายในช่อง / ข้อความ / วิทยุเพื่อให้คุณรู้ว่ามันคือการควบคุมแบบไหน




3

ใช้ Nodename ผ่าน tagName:

nodeName มีฟังก์ชันการทำงานทั้งหมดของ tagName รวมทั้งอีกไม่กี่ ดังนั้น nodeName เป็นตัวเลือกที่ดีกว่าเสมอ

ดูDOM Core

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.