【问题标题】:jQuery how to get select change the image,ajax work in multiple form?jQuery如何选择更改图像,ajax以多种形式工作?
【发布时间】:2011-04-19 19:48:02
【问题描述】:

我需要选择更改一些数据并以自己的形式更改图像 每个来自将有自己的预览图像。 每个图像都会从选定的选项中获得 attr 名称“imagePreview”。 如果 attr 或 imagePreview="0" 中什么都不做

这里是我的一些工作脚本,但是当我更改选项时,DIV 标记中的所有图像预览都会更改,而不仅仅是表单... 请帮我让它工作>.

脚本

<script type="text/javascript">
$(document).ready(function() {
$('.choose').change(function(event) {
  var update = $(this).prev();
  //------
  var src = $("option:selected").attr("imagePreview");
  $(".imagePreview").html(src ? "<img src='" + src + "'>" : "");
  //-----
  $.post('select-change-ajax2.php', $(this).closest('form').serialize(), function(data) {
    update.html(data);
  });
});
});
</script>

html 表单

<form>
<div class="imagePreview">
   displays image here
</div>
( etc data this data not change )
 <div class="update">Default Data</div>
    <select name='selected' class="choose">
        <option value="1" imagePreview='/images/1.jpg'>1</option>
        <option value="2" imagePreview='0'>2</option>
       </select>
       <input type='hidden' name='do' value='go' />
</form>

<hr />

<form>
<div class="imagePreview">
   displays image here
</div>
( etc data this data not change )
 <div class="update">Default Data</div>
    <select name='selected' class="choose">
        <option value="3" imagePreview='/images/1.jpg'>3</option>
        <option value="4" imagePreview='0'>4</option>
       </select>
       <input type='hidden' name='do' value='go' />
</form>

【问题讨论】:

    标签: jquery ajax image forms select


    【解决方案1】:

    您可以找到重要的元素(.imagePreview&lt;option&gt;relatively,如下所示:

    $(function() {
      $('.choose').change(function(event) {
        var form = $(this).closest("form"),
            update = form.find(".update"),
            src = $(this).find("option:selected").attr("imagePreview");
        form.find(".imagePreview").html(src ? "<img src='" + src + "'>" : "");
        $.post('select-change-ajax2.php', form.serialize(), function(data) {
          update.html(data);
        });
      });
    });
    

    关键是将$("option:selected")$(".imagePreview") 更改为相对于更改元素,而不是分别选择它们找到的第一个/全部。

    在找到 firstany &lt;form&gt;all .imagePreview 元素中选择 &lt;option&gt; 之前,而不是使用 @ 987654322@ 我们正在寻找与已更改的&lt;select&gt;this)相关的元素。

    【讨论】:

    • 再次感谢尼克,它运行良好你忘记了一些“var”和“;” ...所以,我只是将您的新代码再次放入下一个答案中:D
    • @Choo - 您可以使用逗号同时声明多个变量,我将更改缩进以使其更明显。
    猜你喜欢
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2023-03-16
    相关资源
    最近更新 更多