jQuery $(this).data在select中返回undefined

时间:2012-03-16 07:19:06

标签: jquery

示例http://jsfiddle.net/Rg8rf/

$("#label").change(function() {
    var src = $(this).data('value');
    alert(src);
});

如何从data-value获取值?

8 个答案:

答案 0 :(得分:5)

这种情况意味着选择列表,因此您必须在“this”中捕获所选值。这对你有用:

$("#label").change(function() {
    var src = $(this).children(":selected").data('value');
    alert(src);
});​

如果您不确定并且没有达到预期的价值,那么在这种情况下很容易测试。在更改方法中,您可以编写console.debug(this)并在控制台中查看内部的内容,或者只是警告($(this).attr(“id”))

答案 1 :(得分:2)

如果你想抓住标签的价值

    $("#label").change(function() {
    var src = $(this).find("option");
    src.each(function(){
      alert($(this).attr('data-value'));
    });
});

查看演示版http://jsfiddle.net/viyancs/ZhGt3/5/

使用函数.html()获取标签的值,如<element> value </element>,如果是另一种情况<element> <div>test</div> <element>,您可以使用选择器jquery自定义...但要确保元素已经有方法是什么你想用吗?

答案 2 :(得分:2)

使用

$(this).children('option:selected').attr('data-value');

答案 3 :(得分:1)

$("#label").change(function() {
    var src = $(this).val(); //for value
    alert(src);
});
$("#label").change(function() {
    var src = $(this).find('option:selected').text(); //for the text
    alert(src);
});

对于任何其他参数

$("#label").change(function() {
    var src = $(this).find('option:selected').attr('data-value'); //for other params
    alert(src);
});

答案 4 :(得分:1)

$(this).find('option:selected').attr('data-value');

.data()与此无关。留下无辜的人:D

答案 5 :(得分:1)

它不工作因为$(this)指的是#label而不是所选的选项。

$("#label").on('change', function() {
    var src = $('option:selected').data('value');
    alert(src);
});​

小提琴: http://jsfiddle.net/AAugX/

答案 6 :(得分:1)

$("#label").change(function() {
    var src = $(this).find('option:selected').data('value);
    alert(src);
});

我相应地修改了你的小提琴。 http://jsfiddle.net/Rg8rf/1/

答案 7 :(得分:1)

var src = $(this).find('option:selected')。data('value');

没有attr