【发布时间】:2016-03-25 14:18:23
【问题描述】:
我的页面上有一个<select> 元素,其中设置了onchange 属性:
<select id="MySelect" onchange="return myOnChange(this);">Whatever</select>
事件处理程序是这样的:
function myOnChange(select) {
var parentNode = select.parentNode;
//whatever
}
加载页面后,用户更改下拉菜单中的选择并调用事件处理程序,并且parentNode 绑定到某个东西(无论它是什么,它都不是未定义的,这就足够了)。
但是,如果我添加 document.ready():
$(document).ready(function () {
var select = $('#MySelect');
var parentNode = select.parentNode;
//whatever
});
或window.load():
$(window).load(function () {
var select = $('#MySelect');
var parentNode = select.parentNode;
//whatever
});
然后一旦它们中的任何一个被调用,那么parentNode 是未定义的。
这是为什么?页面加载后如何调用我的处理程序以使parentNode 未定义?
【问题讨论】:
-
jQuery 函数返回节点列表,而不是 DOM 节点。
-
@Oriol 我想说,对于已经知道有两种对象的人来说,这个问题只是那个问题的重复。我对此一无所知 - 对我来说它是“在这里工作但不在那里工作”,答案是“有两种对象,这是您访问正确的对象的方式”。
标签: javascript jquery events jquery-events document-ready