如何用jQuery获取选择器字符串并实现输入框自动赋值?
实现方法
首先明确:jQuery没有提供公开的selectorstring属性来直接获取选择器字符串(旧版jQuery曾有内部selector属性,但新版已移除,不建议依赖)。不过可以通过更可靠的方式实现批量填充,或者按需解析选择器:
推荐方案:直接利用input的name属性
这是最靠谱的方式,因为input的name属性本身就对应数据的键,无需解析选择器:
// 批量填充所有name属性匹配data键的input $('input[name]').each(function() { const fieldKey = this.name; if (data.hasOwnProperty(fieldKey)) { $(this).val(data[fieldKey]); } }); // 若只需填充指定input,可精准选择 $('input[name=foobar], input[name=foo], input[name=bar]').each(function() { $(this).val(data[this.name]); });
可选方案:解析选择器(仅旧版jQuery兼容)
如果一定要通过解析选择器字符串实现,旧版jQuery(1.x-2.x)中可以通过内部selector属性获取选择器,但该属性在jQuery 3.x及以后已被移除,兼容性差:
$.fn.fillFromSelector = function(data) { return this.each(function() { const selector = $(this).selector; const keyMatch = selector.match(/name=(\w+)/); if (keyMatch && data[keyMatch[1]]) { $(this).val(data[keyMatch[1]]); } }); }; // 使用示例(仅旧版jQuery可用) $('input[name=foobar]').fillFromSelector(data);
总结
优先使用直接读取name属性的方案,代码简洁、兼容性强,完全能替代手动逐个赋值的冗余写法,且无需依赖不稳定的内部属性。
内容的提问来源于stack exchange,提问作者Jordy
相关产品推荐
相关产品推荐

