未捕获的类型错误:$(...).size 不是函数
Posted
技术标签:
【中文标题】未捕获的类型错误:$(...).size 不是函数【英文标题】:Uncaught TypeError: $(...).size is not a function 【发布时间】:2019-06-22 00:53:22 【问题描述】:我正在使用插件从文件管理器中插入图像,但出现错误:
imagebrowser.php?func=addImage&w=160&h=120:77 Uncaught TypeError: $(...).size is not a function
at addImage (/site/dashboard/load.php?id=i18n_gallery&create:564)
at submitLink (imagebrowser.php?func=addImage&w=160&h=120:77)
at htmlAnchorElement.onclick (imagebrowser.php?func=addImage&w=160&h=120:53)
addImage @ /site/dashboard/load.php?id=i18n_gallery&create:564
submitLink @ imagebrowser.php?func=addImage&w=160&h=120:77
onclick @ imagebrowser.php?func=addImage&w=160&h=120:53
我正在使用的 javascript 代码:
<p><em><b><?php echo count($filesSorted); ?></b> <?php i18n('TOTAL_FILES'); ?> (<?php echo fSize($totalsize); ?>)</em></p>
<p><a href="javascript:void(0)" onclick="submitAllLinks()"><?php i18n('i18n_gallery/ADD_ALL_IMAGES'); ?></a></p>
<?php // foreach ($metadata as &$m) if (!@$m['title']) $m['title'] = basename($m['url']); ?>
<script type='text/javascript'>
// <![CDATA[
var metadata = <?php echo json_encode($metadata); ?>;
function submitLink(i)
var item = metadata[i];
if(window.opener)
window.opener.<?php echo $func; ?>(item['url'], item['size'], item['width'], item['height'], item['title'], item['tags'], item['description']);
<?php if ($autoclose) ?>window.close();<?php ?>
function submitAllLinks()
for (var i=0; i < metadata.length; i++)
submitLink(i);
// ]]>
</script>
EditExtra.php
<?php
global $id, $url, $parent;
?>
<script type="text/javascript">
// <![CDATA[
<?php
$pages = return_i18n_pages();
# tags
$tags = array();
foreach ($pages as $page)
foreach (preg_split('/\s*,\s*/', trim(@$page['tags'])) as $t) $tags[$t] = true;
$tags = array_keys($tags);
sort($tags);
# structure
$structure = return_i18n_page_structure(null,false,$url);
$siblings = @$pages[''.$parent]['children'];
if ($siblings) $myindex = array_search($url, $siblings); else $myindex = false;
$after = $myindex !== false && $myindex > 0 ? $siblings[$myindex-1] : '';
?>
var after = <?php echo json_encode($after); ?>;
function changeParent()
$parent = $('#post-parent').val();
<?php
$firstoption = '<option value="0">-- '.i18n_r('i18n_navigation/TOP').' --</option>';
$page = $pages[null];
if (isset($page['children']) && count($page['children']) > 0)
$children = $page['children'];
$options = '';
for ($i=0; $i<count($children); $i++)
if ($children[$i] != $url) $options .= '<option value="'.$children[$i].'">'.$pages[$children[$i]]['title'].'</option>';
?>
if ($parent == null || $parent == '')
$('#post-menu-order').empty().html(<?php echo json_encode($firstoption.$options); ?>);
<?php
foreach ($structure as $page)
$page = $pages[$page['url']];
if (isset($page['children']) && count($page['children']) > 0)
$children = $page['children'];
$options = '';
for ($i=0; $i<count($children); $i++)
if ($children[$i] != $url) $options .= '<option value="'.$children[$i].'">'.$pages[$children[$i]]['title'].'</option>';
?>
else if ($parent == <?php echo json_encode($page['url']); ?>)
$('#post-menu-order').empty().html(<?php echo json_encode($firstoption.$options); ?>);
<?php
?>
else
$('#post-menu-order').empty().html(<?php echo json_encode($firstoption); ?>);
$('#post-menu-order').val(after);
function changeUrl()
var url = $('#post-id').val();
if ($('div.leftopt').length > 0) // GetSimple 3.0+
var hide = url.indexOf('_') >= 0;
if (hide)
$('#post-parent').closest('p').hide();
$('#post-private').closest('p').hide();
$('#post-template').closest('p').hide();
$('#post-menu-order').hide();
$('#post-menu-order').prev().hide();
else
if (url.indexOf('_') >= 0)
$('#post-parent').closest('tr').attr('style','display:none');
$('#post-private').closest('td').children().attr('style','display:none');
//$('#post-menu-enable').attr('style','display:none');
$('#post-menu').nextAll().attr('style','display:none');
else
$('#post-parent').closest('tr').attr('style',null);
$('#post-private').closest('td').children().attr('style',null);
//$('#post-menu-enable').attr('style',null);
$('#post-menu').nextAll().attr('style',null);
var tags = <?php echo json_encode($tags); ?>;
$(function()
$fParent = $('#post-parent');
$fParent.empty();
$fParent.append(<?php echo json_encode('<option value="" '.($parent == null ? 'selected' : '').'>-- '.i18n_r('NONE').' --</option>'); ?>);
<?php
foreach ($structure as $page)
?>
$fParent.append(<?php echo json_encode('<option value="'.$page['url'].'" '.($parent == $page['url'] ? 'selected' : '').'>'.($page['level'] > 0 ? str_repeat(" ",5*$page['level']-2).'⌊ ' : '').cl($page['title']).'</option>'); ?>);
<?php
?>
if ($('#tick').length > 0) // GetSimple 3.1+
$('a.viewlink').hide();
$('#menu-items').css('height','auto').css('padding-bottom','10px');
$('#post-menu').attr('style','').addClass('short');
$('#post-menu').prev().remove();
$('#post-menu').prev().remove();
$('#post-menu').prev().remove();
$('#post-menu').before('<span style="text-transform:none"><label for="post-menu">' + <?php echo json_encode(i18n_r('MENU_TEXT')); ?> + '</label></span>');
$('#post-menu-order').attr('style','clear:both;').addClass('short');
$('#post-menu-order').before('<span style="text-transform:none;float:left;"><label for="post-menu">' + <?php echo json_encode(i18n_r('i18n_navigation/INSERT_AFTER')); ?> + '</label></span>');
else if ($('div.leftopt').length > 0) // GetSimple 3.0
$('label[for=post-menu-enable]').nextUntil('input').remove();
$('#menu-items').css('height','auto');
$('#post-menu').attr('style','').addClass('short');
$('#post-menu').prev().remove();
$('#post-menu').prev().remove();
$('#post-menu').prev().remove();
$('#post-menu').before('<label for="post-menu">' + <?php echo json_encode(i18n_r('MENU_TEXT')); ?> + '</label>');
$('#post-menu-order').attr('style','').addClass('short');
$('#post-menu-order').before('<label for="post-menu">' + <?php echo json_encode(i18n_r('i18n_navigation/INSERT_AFTER')); ?> + '</label>');
else
$a = $('#post-menu-enable').closest('td').find('a');
$a.after($a.html());
$a.remove();
$('#post-menu').closest('div').find('span').empty().html(<?php echo json_encode(i18n_r('MENU_TEXT')); ?>);
$('#post-menu').attr('style','').after(<?php echo json_encode('<br /><span>'.i18n_r('i18n_navigation/INSERT_AFTER').'</span>'); ?>);
$('#post-menu-order').attr('style','').before('<br />');
$('#post-parent').change(changeParent);
$('#post-id').change(changeUrl);
changeParent();
changeUrl();
$('#post-metak').autocomplete(tags,
minChars: 0,
max: 50,
scroll: true,
multiple: true,
multipleSeparator: ', '
);
);
// ]]>
</script>
这是我调查后怀疑的主要错误原因:
if ($('#tick').size() > 0)
但将其替换为 length
并不能解决问题。
jQuery 版本:jquery-3.2.1.min.js?v=3.2.1
【问题讨论】:
我相信 .size() 已从 1.8 版本中弃用,并在任何高于 3.0 的版本中被删除 我确实在论坛上读到过,但是我没有看到它在哪里使用,因此如何管理它 请检查更新 你是用length还是length()替换的? 不幸的是,两者都没有工作。它给了Uncaught TypeError: $(...).length is not a function
这并没有帮助我解决我的问题
【参考方案1】:
不要使用$(...).size()
、it is deprecated as of jQuery 1.8。
请改用.length
属性。
欲了解更多信息,请参阅.size() | jQuery API Documentation
将size()
替换为length
后,发现实际问题是引用了不存在的元素。这意味着undefined
确实不是一个函数。
【讨论】:
我试过了,但没有用,它给了Uncaught TypeError: $(...).length is not a function
这并没有帮助我解决我的问题
你可以用if ($('#tick').size() > 0)
发布代码部分吗?如果您发送整个页面的源代码,那就更好了。此外,在页面加载时尝试在控制台中输入console.log($.fn.jquery)
,以检查 JQuery 是否正确加载(以及它是什么版本)
console.log($.fn.jquery) VM29387:1 3.2.1 未定义
我使用 length
而不是 length()
但现在我收到此错误 Uncaught TypeError: Cannot read property 'indexOf' of undefined
现在问题出现在url.indexOf('_') >= 0
行,如果在$('#post-id')
期间没有找到带有id=post-id
的元素,$('#post-id').val()
返回未定义。加载页面时,在控制台检查$('#post-id').length
,如果不是1,那就是问题【参考方案2】:
size() 函数已被弃用。 添加以下代码:
$(function()
$.fn.size = function()
return this.length;
);
您无需更改代码。
【讨论】:
以上是关于未捕获的类型错误:$(...).size 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
未捕获的类型错误:$(...).magnificPopup 不是函数