jQuery $(this)和$(“id”)给出不同的值

时间:2014-06-25 16:03:04

标签: jquery

我有些麻烦理解为什么这不能像我期望的那样工作。 基本上我有这样的选择:

<select id="myId" data-option-name="myOption" onchange="_ui.updateOptions($(this));">
....
</select>

updateOptions: function(element) {
  var x = element.data("optionName");
}

在代码的另一个分支中,我想这样做

var x = $("#myId").data("optionName");

但是我得到了未定义的结果,而它在updateOptions中有效。

另外,如果我这样做(其中element = $(this)of&#34; myId&#34; select)

updateOptions: function(element) {
  var y = (element == $("#myId"));
}

我知道你是假的。

我错过了什么吗?如何从$(&#34; myId&#34;)中访问data-option-name?

编辑:我刚想到可能(element == $("#myId"))返回false,因为它们是2个不同的jQuery对象,尽管它们引用了相同的DOM元素。

EDIT2:忘记了已发布代码中的哈希值..它们出现在我的源代码中。

EDIT3:更多细节..这些是使用firebug和updateOptions中的断点进行的

$("#myId").attr("id") = "myId";
element.attr("id") = "myId";
$("#myId").data("optionName") = undefined;
element.data("optionName") = "myValue";
$("#myId").data("option-name") = undefined;
element.data("option-name") = "myValue";
$("#myId").attr("data-option-name") = undefined;
element.attr("data-option-name") = "myValue";

EDIT4:

$("#myId").is(element) returns false

2 个答案:

答案 0 :(得分:1)

你错过了哈希:

var x = $("#myId").data("optionName");

答案 1 :(得分:0)

我发现了这个问题,现在我觉得非常愚蠢。 我没有注意到我的同事在页面的完全不同的部分添加了具有相同ID的另一个元素。

更改其ID后,现在一切正常。