如何用jQuery修改Wordpress文章内多个同名input元素的属性?
失效原因
jQuery("input[name='next']")选择器会匹配页面中所有name属性为next的input元素,返回的是一个元素集合,直接调用.attr()方法会给集合内的所有元素统一赋值。你写的两行代码会先把两个按钮的value都修改为Next,再把两个按钮的value统一覆盖为Test-summary,因此无法实现分别修改的需求。
解决方案
方案1:结合原有value属性筛选(最稳妥)
两个按钮初始的value值不同,可以直接在选择器中增加value筛选条件,精准匹配要修改的元素:
// 修改原有value为Next的按钮 jQuery("input[name='next'][value='Next']").attr("value", "你需要的新值1"); // 修改原有value为Quiz-summary的按钮 jQuery("input[name='next'][value='Quiz-summary']").attr("value", "Test-summary");
方案2:按元素顺序索引筛选
如果两个按钮的顺序固定,也可以通过.eq()方法按索引匹配对应元素(索引从0开始计数):
// 修改第一个name为next的按钮 jQuery("input[name='next']").eq(0).attr("value", "你需要的新值1"); // 修改第二个name为next的按钮 jQuery("input[name='next']").eq(1).attr("value", "Test-summary");
Wordpress 环境注意事项
Wordpress默认开启了jQuery的noConflict模式,避免和其他JS库冲突,建议把代码包裹在DOM加载完成的回调中,确保能正常选中元素,完整示例如下:
jQuery(document).ready(function($) { // 回调内可以直接使用$简写,无需写完整的jQuery $("input[name='next'][value='Next']").attr("value", "下一步"); $("input[name='next'][value='Quiz-summary']").attr("value", "测试汇总"); });
内容的提问来源于stack exchange,提问作者MACOSX
相关产品推荐
相关产品推荐

