使用jQuery为图片类追加src属性报错,请求技术帮助
解决jQuery设置图片src属性的语法错误问题
这个错误的根源有两个:一是你用错了jQuery方法,二是Blade模板语法和JS字符串的引号冲突导致解析错误。下面一步步帮你解决:
错误原因分析
- 方法使用错误:
append()方法是用来向元素内部追加内容(比如子元素、文本)的,而不是用来设置HTML属性的。要设置图片的src属性,你应该用attr()或者prop()方法。 - 语法解析错误:你把Laravel Blade的
{!! asset(...) !!}语法直接嵌套在了JS单引号字符串里,导致JS引擎无法正确解析这个模板语法,把pmc_assets当成了未定义的标识符,从而抛出语法错误。
修正后的解决方案
方案1:直接使用attr()设置属性(引号正确嵌套)
保持你的HTML不变:
<img class="img-status">
修改JS代码为:
$('.img-status').attr('src', '{!! asset("pmc_assets/img/online.png") !!}');
这里把asset()里的单引号换成双引号,避免和外层包裹Blade语法的单引号冲突,Blade会先渲染出正确的图片URL,再传递给jQuery的attr()方法设置到图片上。
方案2:先定义URL变量(更清晰易维护)
如果你的JS代码较长,推荐先把Blade渲染好的URL存成一个变量,再使用:
<img class="img-status"> <script> // 先让Blade渲染出图片URL,存在变量里 const onlineImageUrl = '{!! asset("pmc_assets/img/online.png") !!}'; // 再用jQuery设置src属性 $('.img-status').attr('src', onlineImageUrl); </script>
这样修改后,既解决了语法错误,又正确实现了给图片设置src属性的需求。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

