jquery - 自定义数据属性在 <select> 标签内不起作用

标签 jquery html dom

查看这段代码:

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <script src="Template/js/jquery-1.9.0.min.js" ></script>
        <script>
        $(document).ready(function(){

            $(".myselect").change(function(){
                alert( $(this).attr('data-spacing') );
            });

        });
        </script>
    </head>
    <body>
    <select name="type" class="myselect">
        <option data-spacing="001" value="" selected >Select A Camera</option>
        <option data-spacing="002" value="Nicon_D500">Nicon D500</option>
        <option data-spacing="004" value="Nicon_D600">Nicon D600</option>
        <option data-spacing="003" value="Canon_S900">Canon S900</option>
    </select>

    </body>
</html>

data-custom属性适用于任何事物,
但它不适用于 <select><option>标签。

此源代码返回“未定义”
请帮助我。

最佳答案

data 属性属于 option 元素,但更改处理程序已注册到 select 元素,因此更改处理程序中的 this 指的是没有 data- 的 select 元素* 属性

您需要找到实际选择的 option 元素(您可以使用 :selected-selector )来执行此操作。

也使用 .data() api读取data-*

的值
$(document).ready(function () {
    $(".myselect").change(function () {
        alert($(this).find('option:selected').data('spacing'));
    });
});

演示:Fiddle

关于jquery - 自定义数据属性在 <select> 标签内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21049995/

相关文章:

javascript - 如何将 css 类添加到一组链接中的特定链接?

javascript - 有没有一种方法可以仅使用 Javascript 从文件夹中返回所有图像文件名的列表?

javascript - 动态创建的元素上的事件绑定(bind)?

javascript - 多个div指向同一个标签

javascript - JQuery fadeIn() 关于 DOM 元素创建?

javascript - 无法在 AJAX 成功之外访问 JSON 对象

javascript - ajax 没有被调用..甚至警报也不起作用

javascript - 从 HTML 视频中提取控件

c++ - QDom 删除节点

JavaScript getElementById(array).style.borderColor 不起作用