$ (this) .val () ไม่ทำงานเพื่อรับข้อความจาก span โดยใช้ jquery


98

ให้ html นี้ฉันต้องการคว้า "สิงหาคม" จากมันเมื่อฉันคลิกที่มัน:

<span class="ui-datepicker-month">August</span>

ฉันเหนื่อย

$(".ui-datepicker-month").live("click", function () {
    var monthname =  $(this).val();
    alert(monthname);
});

แต่ดูเหมือนจะไม่ทำงาน

คำตอบ:


212

แทนที่จะ.val()ใช้.text()เช่นนี้:

$(".ui-datepicker-month").live("click", function () {
    var monthname =  $(this).text();
    alert(monthname);
});

หรือใน jQuery 1.7+ ใช้on()ตามที่liveเลิกใช้แล้ว:

$(document).on('click', '.ui-datepicker-month', function () {
    var monthname =  $(this).text();
    alert(monthname);
});

.val()ใช้สำหรับองค์ประกอบประเภทอินพุต (รวมถึงพื้นที่ข้อความและดรอปดาวน์) เนื่องจากคุณกำลังจัดการกับองค์ประกอบที่มีเนื้อหาข้อความให้ใช้.text()ที่นี่


3
หมายเหตุ: .live()เลิกใช้งานแล้วใน 1.7 และลบออกใน 1.9+
Darren

ทั้ง. html () และ. text () ใช้ได้กับองค์ประกอบช่วงของฉัน
lft93ryt



5

- ไม่มีข้อใดที่ใช้ได้ผลสำหรับฉันอย่างต่อเนื่อง ดังนั้นนี่คือวิธีแก้ปัญหาที่ฉันได้รับซึ่งทำงานได้อย่างสม่ำเสมอในทุกเบราว์เซอร์เนื่องจากใช้ฟังก์ชันพื้นฐาน หวังว่านี่อาจช่วยคนอื่นได้ ใช้ jQuery 8.2

1) รับวัตถุ jquery สำหรับ "span" 2) รับวัตถุ DOM จากด้านบน ใช้ jquery .get (0) 3) การใช้ innerText ของวัตถุ DOM รับข้อความ

นี่คือตัวอย่างง่ายๆ

var curSpan = $(this).parent().children(' span').get(0);
var spansText = curSpan.innerText;

HTML

<div >
<input type='checkbox' /><span >testinput</span> 
</div>

4

คุณสามารถใช้.html()เพื่อรับเนื้อหาspanและหรือdivองค์ประกอบต่างๆ

ตัวอย่าง:

    var monthname =  $(this).html();
    alert(monthname);


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