jQuery UI 按钮图标:e.extra.match 不是函数

Posted

技术标签:

【中文标题】jQuery UI 按钮图标:e.extra.match 不是函数【英文标题】:jQuery UI button icon: e.extra.match is not a function 【发布时间】:2017-09-20 03:47:06 【问题描述】:

尝试在jquery-ui button widget 中使用图标:

<!DOCTYPE html>
<html>
<head>
    <title></title> 

    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</head>
<body>

    <span class="ui-icon ui-icon-gear"></span>
    <button id="btn">Button</button>


<script>

    $("#btn").button(
        icon: icon: "ui-icon-gear"
    );

</script>

</body>
</html>

我收到以下错误:

未捕获的类型错误:e.extra.match 不是函数 在 t.(匿名函数).(匿名函数)._classes (https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:8956) 在 t.(匿名函数).(匿名函数)._toggleClass (https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:9473) 在 t.(匿名函数).(匿名函数)._addClass (https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:9265) 在 t.(匿名函数).(匿名函数)._updateIcon (https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:8:17888) 在 t.(匿名函数).(匿名函数)._updateIcon (https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:4499) 在 t.(匿名函数).(匿名函数)._enhance (https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:8:17358) 在 t.(匿名函数).(匿名函数)._enhance (https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:4499) 在 t.(匿名函数).(匿名函数)._create (https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:8:17057) 在 t.(匿名函数).(匿名函数)._create (https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:4499) 在 t.(匿名函数).(匿名函数).t (https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:6:4326)

关于如何解决此问题的任何提示?

【问题讨论】:

您是否要在您的按钮中保留“按钮”文本?还是您想影响一个仅图标的按钮? @Ito Pizarro 最终目标是拥有一个仅图标按钮,但无论按钮是否带有文本,我都会收到该错误 【参考方案1】:

您正在冗余地复制配置对象。

$( [selector] ).button( 
    icon: "ui-icon-gear" // you don't have to pass `icon` its own object here
 );

而且,要抑制“按钮”文本,您可以添加 showLabel: false 属性。 此外,您的&lt;span class="ui-icon ui-icon-gear"&gt;&lt;/span&gt; 无需在button 中呈现图标。

$("#button-example-1").button(
  icon: "ui-icon-gear"
);
$("#button-example-2").button(
  icon: "ui-icon-gear",
  showLabel: false
);
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

<button id="button-example-1">Button with icon and text</button>
<button id="button-example-2">Icon only button</button>

【讨论】:

谢谢,jquery docs 上的代码 sn-p 让我很困惑。 span 图标只是为了表明 jquery 图标类工作正常

以上是关于jQuery UI 按钮图标:e.extra.match 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI 按钮图标:e.extra.match 不是函数

jquery-ui 按钮看起来已禁用

将 JQuery UI Datepicker 与来自 Jquery UI 主题的图标一起使用

Jquery UI 对话框使不可关闭

jQuery UI 图标。 .ui-state-hover .ui-icon 被浏览器忽略

jQuery UI 对话框 - 缺少关闭图标