Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery$(this)和$(“id”)给出了不同的值_Jquery - Fatal编程技术网

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

jQuery$(this)和$(“id”)给出了不同的值,jquery,Jquery,我很难理解为什么这不能像我期望的那样起作用。 基本上我有这样一个选择: <select id="myId" data-option-name="myOption" onchange="_ui.updateOptions($(this));"> .... </select> 在代码的另一个分支中,我想这样做 var x = $("#myId").data("optionName"); 但是,当它在updateOptions中工作时,我得到了未定义的结果 另外,如果我这样

我很难理解为什么这不能像我期望的那样起作用。 基本上我有这样一个选择:

<select id="myId" data-option-name="myOption" onchange="_ui.updateOptions($(this));">
....
</select>
在代码的另一个分支中,我想这样做

var x = $("#myId").data("optionName");
但是,当它在updateOptions中工作时,我得到了未定义的结果

另外,如果我这样做,其中元素=$this是myId的select

updateOptions: function(element) {
  var y = (element == $("#myId"));
}
我知道y是假的

我错过什么了吗?如何从$myId内部访问数据选项名称

编辑:我刚刚想到,element=$myId可能返回false,因为它们是两个不同的jQuery对象,尽管它们引用的是同一个DOM元素

EDIT2:忘记了发布代码中的哈希值。。它们存在于我的源头

编辑3:更多细节。。这些都是使用带有断点的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";
编辑4:

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

您缺少哈希:

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

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


更改id后,现在一切正常。

对不起,我的坏。。它们存在于我的代码中,我无法按原样发布在这里,但我必须重写它。我修正了我的问题,最好在jQuery对象变量名前面加$;我希望元素是DOM元素,但$element是jQuery对象。我们需要知道在哪里以及如何调用updateOptions方法。有可能是你错了。另外:请参阅比较两个对象的问题。因此,$'myId'缺少属性?原因必须在代码的其他地方;你没有给我们任何解释。在页面加载时可用,或者是在加载后动态添加?我开始相信会发生一些事情,因为我也在使用bootstrap。奇怪的是,我确信在我的页面中只有一个id=myId的对象,只有两个部分调用updateOptions:一个是在onchange中使用$this的select本身,另一个是我需要使用$myId调用它的地方。我会试着看更多的细节。谢谢
var x = $("#myId").data("optionName");