Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
Javascript 为什么元素是';从document.ready()和window.load()内部访问时,是否未定义s parentNode?_Javascript_Jquery_Events_Javascript Events_Document Ready - Fatal编程技术网

Javascript 为什么元素是';从document.ready()和window.load()内部访问时,是否未定义s parentNode?

Javascript 为什么元素是';从document.ready()和window.load()内部访问时,是否未定义s parentNode?,javascript,jquery,events,javascript-events,document-ready,Javascript,Jquery,Events,Javascript Events,Document Ready,我的页面上有一个元素,它具有onchange属性集: <select id="MySelect" onchange="return myOnChange(this);">Whatever</select> 加载页面后,用户更改下拉列表中的选择,并调用事件处理程序,parentNode被绑定到某个对象(不管它是什么,它都不是未定义的,这就足够了) 但是,如果我添加一个文档.ready(): 或window.load(): 然后,一旦调用了它们中的任何一个,则parentN

我的页面上有一个
元素,它具有
onchange
属性集:

<select id="MySelect" onchange="return myOnChange(this);">Whatever</select>
加载页面后,用户更改下拉列表中的选择,并调用事件处理程序,
parentNode
被绑定到某个对象(不管它是什么,它都不是未定义的,这就足够了)

但是,如果我添加一个
文档.ready()

window.load()

然后,一旦调用了它们中的任何一个,则
parentNode
未定义


为什么会这样?加载页面后,如何调用处理程序以使
parentNode
未定义?

因为jQuery对象中没有parentNode

var parentNode = select.parent()


您正在通过jquery对象访问节点对象的属性

var select = $('#MySelect');
var parentNode = select.parent();
您必须使用jquery的
.parent()
函数


onchange
事件处理程序中,您将收到
this
作为其参数。基本上,其上的
this
表示调用事件的元素。这就是
节点
对象。这样您就可以访问属性
parentNode
。但不是通过jquery对象。

如果我使用
select.get()
,我会得到一个“常规”对象吗?应该注意,第一个
parentNode
也是jquery对象,您将得到DOM元素。是的,通过使用
.get(0)
可以访问我在某个地方传递的节点,该节点在某个地方愉快地调用了
parentNode
。请在答案中添加
get()
的用法好吗?jQuery函数返回的是节点列表,而不是DOM节点。@Oriol我想说,对于已经知道有两种对象的人来说,这个问题只是这个问题的重复。我不知道这一点——对我来说,这是“在这里工作,但不在那里”,答案是“有两种对象,下面是如何访问正确的对象”。
var parentNode = select.parent()
var parentNode = select.parent()
var parentNode = select[0].parentNode;
var select = $('#MySelect');
var parentNode = select.parent();