$(this) . val()不能使用 jquery 从 span 获取文本

给这个 html,我想从它抓取“八月”当我点击它:

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

我尽力了

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

但似乎没什么效果

271579 次浏览

Instead of .val() use .text(), like this:

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

Or in jQuery 1.7+ use on() as live is deprecated:

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

.val() is for input type elements (including textareas and dropdowns), since you're dealing with an element with text content, use .text() here.

I think you want .text():

var monthname = $(this).text();

.val() is for input elements, use .html() instead

-None of the above consistently worked for me. So here is the solution i worked out that works consistently across all browsers as it uses basic functionality. Hope this may help others. Using jQuery 8.2

1) Get the jquery object for "span". 2) Get the DOM object from above. Using jquery .get(0) 3) Using DOM's object's innerText get the text.

Here is a simple example

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

HTML

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

You can use .html() to get content of span and or div elements.

example:

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

To retrieve text of an auto generated span value just do this :

var al = $("#id-span-name").text();
alert(al);

Here we go:

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

Hope it helps;)