jQuery val 在 Chrome 中无法正常工作

标签 jquery google-chrome

我有一个简单的 jQuery 函数:

$('#selectable1 span').live('mousedown', function() {
        var ff = $(this).css("font-family");
        $("#family").val(ff);
});

当单击(鼠标按下)跨度元素时,输入(#family)将获取其字体系列值。 它适用于 FireFox,但在 Chrome 中,它仅适用于仅由一个单词组成的字体系列。 Georgia 可以,但 Times New Roman 不行。

您可以在此处查看代码:

http://jsfiddle.net/aLaGa/

或住在 http://www.typefolly.com

这有什么问题吗? 谢谢

最佳答案

Chrome 将具有多个单词的字体系列用单引号括起来。因此,Chrome 中返回的 font-family 值是:'Times New Roman',它与选择列表 Times New Roman 中的值不匹配。

考虑到所有这些浏览器变化,我认为最好的解决方案是用逗号分隔姓氏,修剪每个字体名称周围的单引号(如果有),然后再将它们连接起来。在选择列表中使用这个清理后的值。

$('#selectable1 span').live('mousedown', function() {
    var fontFamily = $(this).css('font-family');

    var fonts = fontFamily.split(',');
    var sanitizedFonts = $.map(fonts, function(name) {
        // trim single quotes around font name (if any) for Chrome/Safari
        // trim double quotes around font name (if any) for Firefox
        return name.trim().replace(/^['"]|['"]$/g, '');
    });

    $('#family').val(sanitizedFonts.join(', '));
});

查看example 。必须更改选择列表以遵循一致的值命名方案:

字体名称[, 字体名称]

这在很大程度上依赖于这样一个事实:字体名称包含任何逗号,无论带引号还是不带引号。

关于jQuery val 在 Chrome 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2920147/

相关文章:

javascript - 循环中的变量

javascript - jQuery 为 dom 元素提供唯一编号?

javascript - 显示 PDF 浏览器不同的结果 Firefox/Chrome

html - 修复有问题的过滤器 CSS 属性转换(Chrome)?

php - jQuery UI 日期选择器 : Displaying 1969 although I use strtotime

javascript - 如何关闭所有打开的 JQuery 对话框

javascript - 使元素在事件发生之前以某种方式表现(制作吃 bean 人游戏)

javascript - JSON URL 不适用于参数

javascript - Chrome 扩展模式对话框或其他通知用户的解决方案?

google-chrome - 最小化 Chrome 应用程序窗口