CSHTML中如何调用动态生成的ID?jQuery选择器写法是否正确
问题解答
现有写法存在多处错误,无法正常生效,具体问题如下:
- 属性选择器规则错误:
[id^=xxx]前缀匹配规则中不需要加#,#是ID选择器的专属标识,放在属性匹配规则中会被当成普通字符参与匹配,完全无法命中前缀为payMethod的元素。 - 大小写不匹配:后端生成的ID前缀是小写开头的
payMethod,你的选择器中写的是大写开头的PayMethod,字符串匹配对大小写敏感,二者完全无法匹配。 - 语法格式错误:属性选择器中
id和^=之间不能有空格,空格会被jQuery解析为后代选择器逻辑,直接导致整个选择器规则失效。 - 选中状态设置方法不符合最佳实践:使用
attr()设置单选框的checked状态容易出现属性更新但DOM实际选中状态不同步的问题,对于表单元素的布尔属性(checked、disabled、selected等),推荐使用prop()方法设置。
修正后的正确写法
如果你的HTML元素ID是直接渲染@payMethod的值生成的(即ID前缀为payMethod),修正后的代码如下:
function() { $('input[id^="payMethod"]').prop('checked', headerChecked); }
额外注意
你当前写的HTML标签<input id=f(@payMethod) type="radio" value=" @method.Value" name="cartaCont" />存在渲染问题,如果是Razor等后端模板语法,这个写法生成的ID会是f(payMethodXXX)格式而非你预期的payMethodXXX,如果确实需要保留f()格式,对应的选择器要调整为$('input[id^="f(payMethod"]')。
内容的提问来源于stack exchange,提问作者Ivyx
相关产品推荐
相关产品推荐

