5

我想用单选按钮选择更改 html 的 backgroundImage。每个单选按钮都有不同的图像。我试过这样:

      <input name="BG" id="wood" type="radio" value="" class="bgCollection" />
      <label for="radio">Wood</label>

      <input name="BG" id="steel" type="radio"  class="bgCollection"/>
      <label for="radio">Steel</label>

      <input name="BG" id="metal" type="radio" value="" class="bgCollection"/>
      <label for="radio">Black metal</label>

查询:

    $(document).ready(function(){
            $(".bgCollection").change(
               function()
          {
        if($("input#wood").attr("checked"))  
                  {$("html").css('backgroundImage','url(../images/wood.jpg)');}
        if($("input#steel").attr("checked")
                   {$("html").css('backgroundImage','url(../images/BG-steel.jpg)');}
        if($("input#metal").attr("checked"))
                   {$("html").css('backgroundImage','url(images/blackMetal.jpg)');}
       });
  });

但是这样背景并没有改变。

4

4 回答 4

3

在这里,我已经完成了上述问题的完整演示。请检查演示链接。

演示: http ://codebins.com/bin/4ldqp80

HTML:

<input name="BG" id="wood" type="radio" value="" class="bgCollection" />
<label for="radio">
  Wood
</label>

<input name="BG" id="steel" type="radio"  class="bgCollection"/>
<label for="radio">
  Steel
</label>

<input name="BG" id="metal" type="radio" value="" class="bgCollection"/>
<label for="radio">
  Black metal
</label>

jQuery:

$(function() {
    $(".bgCollection").change(function() {
        if ($("#wood").is(":checked")) {
            $("body").css('backgroundImage', "url('http://cdnimg.visualizeus.com/thumbs/7f/78/gfx,wood-7f78592c9a6ed3390492c560c5ac6fec_h.jpg')");
        }
        if ($("#steel").is(":checked")) {
            $("body").css('backgroundImage', "url('http://www.aroorsteelcorporation.com/full-images/stainless-steel-834007.jpg')");
        }
        if ($("#metal").is(":checked")) {
            $("body").css('backgroundImage', "url('http://i00.i.aliimg.com/photo/v0/468538622/Brushed_metal_texture_prepainted_metal.jpg')");
        }
    });
});

演示: http ://codebins.com/bin/4ldqp80

于 2012-08-28T05:51:14.513 回答
2

你做对了,但是你的 jQuery 中有一个小的语法错误

if($("input#steel").attr("checked")

应该

if($("input#steel").attr("checked"))

请注意)末尾缺少括号

工作小提琴

但是更好的方法是使用它来获取 id,然后应用 switch 来检查 Value 以设置背景

新示例

于 2012-08-28T05:04:58.307 回答
0

代码中的第一个问题

如果条件错误if($("input#steel").attr("checked") ,您的第二个问题应该是if($("input#steel").attr("checked"))您的右括号不存在,那么您应该只更改下一个标签意味着控制而不是整个 html。

所以.next()在这里使用 jquery 文档的功能http://api.jquery.com/next/

我在这里在 jsfiddle 测试中尝试了这段代码:http: //jsfiddle.net/FB37y/

于 2012-08-28T05:09:54.970 回答
0

您的代码的以下行中缺少 ):

if($("input#steel").attr("checked"))
                   {$("html").css('backgroundImage','url(../images/BG-steel.jpg)');} 
于 2012-08-28T05:10:11.270 回答