如何从 e.currentTarget.value JQuery 获取子属性

How do I get a child attribute from a e.currentTarget.value JQuery

提问人:user3457760 提问时间:6/11/2015 最后编辑:Henry Eckeruser3457760 更新时间:9/4/2023 访问量:9922

问:

我正在尝试从 的子项中获取一个属性。我试过了, (currentTargete.currentTarget.child.attr("data-english")

我已经用谷歌搜索了它,但没有找到任何有用的东西,也许是我是代码新手,我可能查错了东西。

这是 HTML

 < select class="form-control" id="select_fundFamily"     name="select_fundFamily" autocomplete="off" >
  < option value="stuff" data-english="english" data-family-locallang="model" >

目前在 JQuery 中,正在显示 select 元素。e.currentTarget.value;

有人可以建议我采取什么途径来解决这个问题吗?

JavaScript jQuery

评论


答:

6赞 Ted 6/11/2015 #1

对于选择中所选选项的值,可以使用

$(e.currentTarget).find(':selected').attr("data-english");

运行下面的代码片段以查看其工作原理

$(document).ready(function(){
    $('select').change(function(e){
         var eng = $(e.currentTarget).find(':selected').attr("data-english");
        $('body').append(eng);
    })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="select_fundFamily"> 
    <option selected disabled>Select something</option>
    <option value="stuff1" data-english="english1" >1</option>
    <option value="stuff2" data-english="english2" >2</option>
    <option value="stuff3" data-english="english3" >3</option>
    <option value="stuff4" data-english="english4" >4</option>
    <option value="stuff5" data-english="english5" >5</option>
</select>

2赞 adelindev 6/11/2015 #2

如果尝试确定所选选项的属性。一个简单的解决方案是:

var dataEnglish = $('#select_fundFamily option:selected').attr('data-english'); // dataEnglish = english

评论

1赞 adelindev 6/11/2015
一种更优雅的方法 - 如果你想确定当'change'事件发生时 - 你也可以像这样完成它: $('#select_fundFamily').on('change', function (e) { var option = $(“option:selected”, this); console.log(option.attr('data-english')); // 英语 });
1赞 Hien Luong 6/11/2015 #3

currentTarget 将响应事件侦听器触发事件的任何元素。就您而言,我认为您想使用 e.target 来定位正确的元素。

$("select#select_fundFamily").on('click','option', function(e) {
    e.preventDefault();
    $(e.target).attr('data-english'); // you can use $(this) instead
    //something else
});