【问题标题】:How do I do an image swap with radio buttons, 3 images and 3 states?如何使用单选按钮、3 个图像和 3 个状态进行图像交换?
【发布时间】:2012-01-20 02:51:02
【问题描述】:

我有 3 个图像需要在单击 3 个单选按钮时切换到 on state - 并在未选中时返回。

足够简单: 与单选按钮关联的值是图像的 id 和图像的名称(减去状态)。

我希望在单击按钮时与图像 src 相关联。
我如何让它发挥作用?

$(document).ready(function() {

     $(".challengeradio").change(function(){
          if(this.checked){  
             $("#" + this.value +".pic").attr("src").replace("_off", "_on");     
                          }     
                   });     
          });

~~~和请求的XHTML~

 <div id="chooseChallenge">
    <h2> Choose a Challenge </h2>
    <div class="badge" id="weightLossChallenge"> 
    <div class="challengelabel" id="chall_weightloss">
    <input type="radio" value="chall_weightloss" name="challenge" class="challengeradio">
   <strong> the big <br>Thang</strong>
    </div>
    <img border="0" src="http://www.yoozit.net/zone/images/chall_weightloss_on.png" id="chall_weightloss" class="pic"> </div>

    <div class="badge" id="activityChallenge">
     <div class="challengelabel" id="chall_activity">
    <input type="radio" value="chall_activity" name="challenge" class="challengeradio">
    <strong> Activity Tracker<br>Thang</strong>
    </div> <img border="0" src="http://www.yoozit.net/zone/images/chall_activity_off.png" id="chall_activity" class="pic"></div>

    <div class="badge" id="basicChallenge"> 
    <div class="challengelabel" id="chall_basic">
    <input type="radio" value="chall_basic" name="challenge" class="challengeradio">
    <strong>Basic Standard <br>Thang</strong>
    </div>
    <img border="0" src="http://www.yoozit.net/zone/images/chall_basic_off.png" id="chall_basic" class="pic"></div>
  </div>

【问题讨论】:

  • 您好,欢迎您。这是哪种语言 - 也许为它添加一个标签?最好突出显示代码文本,然后单击编辑框上方的代码示例按钮 {}。
  • @ChrisBD 对不起 - jquery
  • 能否请您也发布您的html。
  • @Frank Astin 确定你去
  • @AnthonyDeoIsm 不确定这是否正是您想要的;但请检查这个小提琴:jsfiddle.net/2Sy2h

标签: jquery image radio swap


【解决方案1】:

尝试使用 $(this).checked, $(this).value

$(".challengeradio").click(function() {
    $("#" + $(this).val() +".pic").attr("src").replace("_off", "_on");   
});

【讨论】:

    【解决方案2】:

    试试

    $("img.addToFavourite").live('click', function() {
        if ($(this).attr("class") == "addToFavourite") {
          this.src = this.src.replace("_off","_on");
          this.title="Remove from favourite"
        } else {
          this.src = this.src.replace("_on","_off");
          this.title="Add to favourite"
        }
        $(this).toggleClass("on");
      });
    

    有两个图像名称为favourite_off.png 和favourite_on.png

    DEMO

    【讨论】:

    • 请 - 单选按钮应该触发图像替换 - 正是 - @diEcho - 你删除了我的单选按钮:)
    • 我刚刚建议了你的逻辑。剩下的一切都在你的手中。您可以通过$.prop('checked')查看单选按钮
    • 我已经通过其他方式完成了这项工作,除了收音机。我不知道无线电对象有什么冲突吗?
    • 嘿,css 中的 .onLive{} 是否需要任何东西?
    【解决方案3】:

    完成!

    有点老套,但可以完成工作:

    http://jsfiddle.net/2Sy2h/26/

    代码:

      $(".challengeradio").change(function(){
    
               if ($(this).prop("checked")) {
              previous = $('img.onlive').first();
              previnput = $('input.onlive').first();
    
              var preimgsrc = {};
              preimgsrc['src'] = "http://www.yoozit.net/zone/images/"+ previnput.attr('value') + "_off.png" ;
              previous.attr(preimgsrc).removeClass('onlive');
              previnput.removeClass('onlive');
              var imgsrc = {};
              imgsrc['src'] = "http://www.yoozit.net/zone/images/"+ this.value + "_on.png" ;  
    
    
              $("#" + this.value +".pic").attr(imgsrc).addClass('onlive');
              $(this).addClass('onlive')   
                  }            
                });     
    

    【讨论】:

    • 你绝地大师!!!你的救命恩人(我跪在雪地里等你接受我作为你的padwan学习者!!)非常感谢
    • 没有问题,您能否将问题标记为已回答,以便我获得代表点数/
    • 对代码稍作改动,提取prev img名称后忘记删除onlive类。现在完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    相关资源
    最近更新 更多