我正在使用jQuery Mobile:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js">
<script type="text/javascript" src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js">
当我使用属性'data-ajax =“false”'的链接时,如果标题可见,我想通过调用以下函数向下滚动标题的高度,该函数使用jQuery执行关键测试.hasClass方法:
function utHeaderScroll() {
var h = $('body').pagecontainer(_getActivePage).children('header')[0];
var y = h.hasClass('ui-fixed-hidden');
if (y) jQuery.mobile.silentScroll(_0 - h.prop(_scrollHeight));
}
第一行成功返回当前页面的标题元素,如此范围变量的Chrome源显示中所示:
h: header.ui-header.ui-bar-inherit.ui-header-fixed.slidedown
....
但是,我从未进入滚动操作,因为当函数进入第二行时,会立即引发Uncaught TypeError: undefined is not a function
,调试器会在jquery-1.10.2.js中显示以下代码:< / p>
if ( !(eventHandle = elemData.handle) ) {
eventHandle = elemData.handle = function( e ) {
// Discard the second event of a jQuery.event.trigger() and
// when an event is called after a page has unloaded
return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
undefined;
};
// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
eventHandle.elem = elem;
}
第二行("eventHandle = elemData.handle = function( e )")
突出显示。
添加了y
变量以更好地隔离问题。最初,hasClass
方法在if子句中执行,结果相同。
我确信这个问题有一个简单的解决方案,但我在两天的探索中找不到它。
答案 0 :(得分:1)
通过在[0]
末尾使用$('body').pagecontainer(_getActivePage).children('header')[0]
,您将收回本机DOM对象而不是jQuery对象。看来你想要包含所有匹配元素的数组中的第一个匹配元素。在这种情况下,请尝试以下方法之一:
试试这个:
$('body').pagecontainer(_getActivePage).children('header:first')
或
$('body').pagecontainer(_getActivePage).children('header').first()
请记住,jQuery对象是本机DOM对象的 超集 。也就是说,jQuery包含所有本机DOM对象方法和 其他 jQuery特定方法。