setAttribute工作,但.attr()和.data()无法设置数据?

时间:2015-05-07 18:18:07

标签: javascript jquery

我正在尝试构建自定义下拉列表,但我已成功完成此操作。但疑问是我无法设置x.data('name','value')x.attr('data-name','value')等数据的原因。 x.setAttribute('data-name','value')正在发挥作用。我得到了错误:

  

x.data不是函数
  x.attr不是函数

我在这里做错了什么?请纠正我,因为我还在学习。

这是我的代码:

$(document).on('click','li.cus-dropdown-option',function(e){
    var x = $(this).parent().prev().children()[0];
    x.innerHTML = $(this).data("option-desc");
    x.setAttribute('data-selected-desc', $(this).data("option-desc"));
    x.setAttribute('data-selected-val', $(this).data("option-value"));

1 个答案:

答案 0 :(得分:4)

您收到的错误是因为您使用[0]从jQuery对象中检索DOMElement。如果您打算从匹配集中检索第一个元素,则应使用first()。然后你收到一个jQuery对象,然后你可以调用data()。试试这个:

$(document).on('click','li.cus-dropdown-option', function(e) {
    $(this).parent().prev().children().first()
        .html($(this).data("option-desc"))
        .data({
            'selected-desc', $(this).data("option-desc"),
            'selected-val', $(this).data("option-value")
        });
});