【问题标题】:Font-Awesome onlick issue on Safari, works on Chrome and FirefoxSafari 上的 Font-Awesome onclick 问题,适用于 Chrome 和 Firefox
【发布时间】:2013-09-02 02:26:17
【问题描述】:

以下内容适用于在 Chrome 和 Firefox 和 Safari 中使用 onclick 的 Font-Awesome。

<img class=“g120 icon-large icon-expand“ border=“0” name=“exp49269” id=“exp49269” alt=“Expand Body” title=“Expand Body" onclick="alert('test')">

以下内容适用于 Chrome 和 Firefox 上的 Font-Awesome 和 onclick,但不适用于 Safari。

<i class=“g120 icon-large icon-expand” border=“0” name=“exp49269” id=“exp49269” alt="Expand Body" title="Expand Body" onclick="alert('test')"></i>

我在所有 3 个浏览器中都有一个适用于“img”元素的 onclick,但适用于“i”元素的 onclick 仅适用于其中 2 个。我需要它作为 i 元素的原因是当图标被点击,我将把类从 icon-expand 更改为 icon-collapse。有任何线索吗?

【问题讨论】:

  • 对不起,我最初没有看到我的 img 等没有正确发布。我现在已经解决了。

标签: javascript html css safari font-awesome


【解决方案1】:

我能想到的唯一解决方案是从脚本源本身调用 JavaScript 事件。例如,您有:

<i class=“g120 icon-large icon-expand” border=“0” name=“exp49269” id=“exp49269” alt="Expand Body" title="Expand Body"></i>

我假设您已经有一个更改类的功能,但可以肯定的是,使用 JQuery:

var $exp49269 = $('#exp49269'); // set a variable to store icon ID

function collapseIcon() {

    this.removeClass('icon-expand').addClass('icon-collapse');

}

$exp49269.click(collapseIcon); // call the function on click

如果需要多次展开和折叠,可以使用条件语句检查是否有某个类,然后执行类更改:

var $exp49269 = $('#exp49269'); // set a variable to store icon ID

function collapseIcon() {

    // check if the clicked icon has the icon-expand or icon-collapse class
    if ($(this).hasClass('icon-expand')) {

        this.removeClass('icon-expand').addClass('icon-collapse');

    } else {

        this.removeClass('icon-collapse').addClass('icon-expand');

}

$exp49269.click(collapseIcon); // call the function on click

我制作了一个 jsFiddle 来展示它的工作原理,更改 div 的类以更改颜色。代码的不同应用,但相同的想法:Fiddle

如果您已经有一个类似或完全相同的函数,这里的重点是从您的脚本而不是 HTML 元素中调用事件应该可以解决问题。

【讨论】:

  • 感谢您提供非常详细的帮助!我会检查一下,让你知道它是如何适合的。
  • 好的,我看到它在不需要 onClick 的情况下发生了变化。我会努力看看我是否可以调整它,但我相信这是我以前的情况,所有浏览器上的 onClick 都会发生变化,例如“img”和其他任何东西。正是 Font-Awesome 的“i”元素给出了我这个麻烦。
  • onclick 用于 js 警报,就像您在问题中遇到的那样,在 &lt;i&gt; 标签上可以正常工作:jsfiddle.net/samrap/uvYqh 显然,在调用您的函数时它不起作用,这就是为什么我提供了上述替代方案。我很困惑你的意思是看你是否可以适应它,是否有特定的原因为什么你想将onclick 事件附加到你的 HTML 而不是把它放在 JavaScript 中?
猜你喜欢
  • 2017-08-22
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 2012-03-06
  • 2011-02-20
  • 2011-04-20
  • 2019-01-26
  • 1970-01-01
相关资源
最近更新 更多