简体   繁体   English

Jquery:根据下拉选择的值动态更改 img src

[英]Jquery: dynamically change an img src based on dropdown selected value

I would like to dynamically display an image after the user has selected it.我想在用户选择图像后动态显示图像。 The different options are generated from a SQL query.不同的选项是从 SQL 查询生成的。

It works when I specify the image as a value:当我将图像指定为值时它起作用:

<select id="SelectLogo" onchange="document.getElementById('logo').src='/images/'+this.value" >
   <option value="img1.png">Image 1</option>
   <option value="img2.png">Image 2</option>
   <option value="img3.png">Image 3</option>
</select>
<img id="logo" src="">

But now I need to post an Id but not the image name.但现在我需要发布一个 Id 而不是图像名称。 I have tried that:我试过:

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select id="SelectLogo" onchange="document.getElementById('logo').src='/images/'+$(this).attr('data-img')" > <option value="1" data-img="img1.png">Image 1</option> <option value="2" data-img="img2.png">Image 2</option> <option value="3" data-img="img3.png">Image 3</option> </select> <img id="logo" src="">

I got an error: undefined我收到一个错误:未定义

You can use $(this).find('option:selected').data('img') to get the selected option data-attribute.您可以使用$(this).find('option:selected').data('img')获取所选选项的数据属性。

Demo Code :演示代码

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select id="SelectLogo" onchange="document.getElementById('logo').src='/images/'+$(this).find('option:selected').data('img')" > <option value="1" data-img="img1.png">Image 1</option> <option value="2" data-img="img2.png">Image 2</option> <option value="3" data-img="img3.png">Image 3</option> </select> <img id="logo" src="">

Also you can use jquery change event handler instead of javascript onchange attribute.您也可以使用 jquery change事件处理程序而不是 javascript onchange属性。 Using this way you can fire change event on page load and set image src in page load.使用这种方式,您可以在页面加载时触发更改事件并在页面加载时设置图像src

$("#SelectLogo").change(function(){
  $("#logo").attr("src", '/images/'+$(":selected", this).data('img'));
}).change();

 $("#SelectLogo").change(function(){ $("#logo").attr("src", '/images/'+$(":selected", this).data('img')); console.log($("#logo").attr("src")); }).change();
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select id="SelectLogo"> <option value="1" data-img="img1.png">Image 1</option> <option value="2" data-img="img2.png">Image 2</option> <option value="3" data-img="img3.png">Image 3</option> </select> <img id="logo" src="">

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM