jQuery:将字符串转换为"手柄;类似于Shopify's Handleize
jQuery: Convert string to "handle" similar to Shopify's Handleize
我正试图用jQuery做与Shopify的"handleize"对字符串所做的相同的事情。
https://docs.shopify.com/themes/liquid-documentation/filters/string-filters#handle
基本上,我想将任何字符串转换为句柄,所以
你好,我叫科里。
将成为
你好,我叫科里
使用jQuery函数。
实际上,您应该使用regex和字符串替换来实现这一点,而不是jQuery。
var name = "Hello, my name is Corey.";
name = name.toLowerCase().replace(/ /g,'-');
您还需要删除所有其他非字母数字字符,如不可见字符、大多数unicode等,因为这很可能会导致类似问题。
name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/-$/, '').replace(/^-/, '');
当你输入文本并输出结果时,我对slugify字符串进行了一个小的jQuery扩展:
jquery.slug.js:
jQuery.fn.slug = function(options) {
var defaults = {
events: 'keypress keyup blur',
targets: ['#slug', '#hidden']
};
var opts = jQuery.extend(defaults, options);
jQuery(this).on(opts.events, function(){
var slug = $(this).val().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/-$/, '').replace(/^-/, '');
jQuery.each(opts.targets, function(index, element) {
$(element).val(slug); // input or textarea
$(element).html(slug); // other dom elements
});
});
};
用法:
$('input[name="some-text-input"]').slug({targets: ['#some-id', 'input[name="some-name"]']});
/* Try this one */
function handleize(text) {
return text.toString().toLowerCase()
.replace(/'s+/g, '-') // Replace spaces with -
.replace(/[^'w'-]+/g, '') // Remove all non-word chars
.replace(/'-'-+/g, '-') // Replace multiple - with single -
.replace(/^-+/, '') // Trim - from start of text
.replace(/-+$/, ''); // Trim - from end of text
}
console.log(handleize("Hello, my name is Corey."));
相关文章:
- Javascript日期格式类似于ISO,但本地
- toBoolean方法类似于toString
- 州和城市选择框类似于国家细分页面
- 通过传递图像的URL通过javascript读取/处理图像-类似于PHP中的file_get_contents
- 在BootStrap菜单栏中为所选项目设置背景,类似于BootStrap中的父导航选项
- 检测演示者工具的事件,类似于onmousedown
- 类似于Prism的Knockout js框架
- 创建类似于Google analytics的分析地图
- 敲除js变量设置类似于调用函数
- 如何处理javascript中的循环引用,类似于Excel提供迭代限制的方式
- 用null填充稀疏数组(类似于压缩两个数组)
- jQuery模态弹出的行为类似于确认和警报对话框
- 如何垂直淡出文本,类似于Amazon'的产品说明
- 如何在JavaScript中创建类似于something.function()的函数
- 使Dockerfile VOLUME的行为类似于docker compose volumes
- TypeScript代码类似于揭示模块模式结构
- E4X中是否有一种方法可以将基元数据类型的XMLList转换为类似于Array.join()的Array
- 有可能对对象中的所有键进行原子更新吗?类似于阵列拼接的东西
- tinyMCE删除背景图像:“"类似于magento的url的内容
- jQuery:将字符串转换为"手柄;类似于Shopify's Handleize