我在尝试获取option
元素的标题,但它始终返回undefined。这也发生了$(this).attr("name")
...和$(this).attr("value")
,但好奇地$(this).val()
工程(如预期)。但是,我可以使用$(this).attr("value", "baz")
来设置值。
小提琴:http://jsfiddle.net/jshado1/JgAJC/1/
我在尝试获取option
元素的标题,但它始终返回undefined。这也发生了$(this).attr("name")
...和$(this).attr("value")
,但好奇地$(this).val()
工程(如预期)。但是,我可以使用$(this).attr("value", "baz")
来设置值。
小提琴:http://jsfiddle.net/jshado1/JgAJC/1/
this
指向<select>
元素。对于所选择的选项,使用:
this.options[this.selectedIndex]
的完整代码(你可以放心地解开$opt
的jQuery的包装,并使用$opt.title
和$opt.name
,这些都是安全在所有浏览器):
$('select').change(function() {
var $opt = $(this.options[this.selectedIndex]),
t = $opt.attr("title"),
n = $opt.attr("name"),
v = this.value;
$("#name").text("name: "+n);
$("#title").text("title: "+n);
$("#value").text("value: "+v);
});
另一种方法中,jQuery的方法是:
$('select').change(function() {
var $opt = $(this).children(':selected'),
t = $opt.attr("title"),
n = $opt.attr("name"),
v = this.value;
$("#name").text("name: "+n);
$("#title").text("title: "+n);
$("#value").text("value: "+v);
});
这是因为你误会了什么this
代表你的代码。 this
代表已更改的select
元素。由于选择节点不具有title
属性,因此未定义。您需要做的是枚举选择的选项列表并找到选定的项目。然后,您可以对该项目进行操作以查找如下信息:
var element = $(this.options[this.selectedIndex]);
element.attr('title');
+1也用于减少重新查询。 – matpie 2012-01-18 22:23:18
顺便说一句,这里是演示:http://jsfiddle.net/JgAJC/5/。我还用'“title”+ t'替换了''标题:“+ n',以便它按照预期工作。 – 2012-01-18 22:27:11
噢,是的,我试图发布更新的链接(我发现后立即注意),但jsfiddle不想更新。谢谢!很棒! – jacob 2012-01-18 22:29:35