javascript - 我怎样才能使这段代码更短

标签 javascript jquery html css

<分区>

我正在努力提高我的编码技能并开始学习 jquery。我从简单的事情开始,比如制作一个非常简单的图像展示柜。这是我到目前为止编写的代码。但它似乎太长而且效率不高。有什么办法可以改进吗?

HTML:

<div id="galerija">
  <div style="float: left; border: 1px solid red; width: 600px; height: 450px;background-image: url(images/gora_big_main.png);" class="big_image"></div>
  <div style="float:left;"id="trumbai">

  <div style="border: 1px solid red; cursor: pointer; width: 150px; height: 75px; background-image: url(images/gora_trumb_1.png);"class="trumb_1"></div>
  <div style="border: 1px solid red; cursor: pointer; width: 150px; height: 75px; background-image: url(images/gora_trumb_2.png);"class="trumb_2"></div>
  <div style="border: 1px solid red; cursor: pointer; width: 150px; height: 75px; background-image: url(images/gora_trumb_2.png);"class="trumb_3"></div>
  <div style="border: 1px solid red; cursor: pointer; width: 150px; height: 75px; background-image: url(images/gora_trumb_main.png);"class="main_trumb"></div>
  </div>
</div>

JS

<script type="text/javascript">
  $(function(){
    $(".trumb_1").click(function(){
      $(".big_image").css("background-image","url('images/gora_big_1.png')");
    });
  });
  $(function(){
    $(".trumb_2").click(function(){
      $(".big_image").css("background-image","url('images/gora_big_2.png')");
    });
  });
  $(function(){
    $(".trumb_3").click(function(){
      $(".big_image").css("background-image","url('images/gora_big_3.png')");
    });
  });
  $(function(){
    $(".main_trumb").click(function(){
      $(".big_image").css("background-image","url('images/gora_big_main.png')");
    });
  });
</script>

最佳答案

将您的样式分离到一个链接的 css 文件中,这样您就不会在 HTML 中有太多重复的样式:

HTML:

<div id="galerija">
   <div id="big_image"></div>
   <div id="trumbai">

      <div id="t1" "class="trumb"></div>
      <div id="t2" "class="trumb"></div>
      <div id="t3" "class="trumb"></div>
      <div id="tmain" "class="trumb"></div>

   </div>
</div>

一个好的经验法则是,如果您可以在 HTML 中找到“style=”,则说明您的内联样式过多。

CSS:

#big_image
{
float: left;
border: 1px solid red;
width: 600px; height:
450px;background-image: url(images/gora_big_main.png);
}

#t1 {background-image: url(images/gora_trumb_1.png);}
#t2 {background-image: url(images/gora_trumb_2.png);}
#t3 {background-image: url(images/gora_trumb_3.png);}
#tmain {background-image: url(images/gora_trumb_main.png);}
#trumbai {float:left;}

.trumb //<--- notice how ALL of the styling for all class="trumb" is set in one place!
{
border: 1px solid red;
cursor: pointer;
width: 150px;
height: 75px;
}

在 JavaScript 中使用变量:

imageClick("#t1", "gora_big_1")
imageClick("#t2", "gora_big_2")
imageClick("#t3", "gora_big_3")
imageClick("#tmain", "gora_big_main")

 function imageClick(id, imageName)
{
       $(function(){
            $("").click(function(){
                $(id).css("background-image","url('images/' + imageName + '.png')");
            });
        });
}

请注意,我将 imageClick() 设为一个非常通用的函数,以便它可以在其他地方重复使用。我以 id 作为参数调用函数,并将 id 完全排除在函数之外。一个代码块可以无限循环。

关于javascript - 我怎样才能使这段代码更短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14412771/

上一篇:javascript - 如何在 Cakephp 中一次加载所有的 css 和 js

下一篇:html - 使用 CSS 的表单样式

相关文章:

javascript - 用 angular.forEach 替换 json 中的对象

javascript - 我在使用 Brackets 尝试实现 css、html 时遇到问题 无法实现图像 1?

javascript - Node.js - 服务器在启动时崩溃,手动启动时不会崩溃

Javascript 两次更改类

javascript - 单击带有 "i"和 "span"内部问题的链接

带有嵌套元素的 jQuery 悬停事件

javascript - JQuery 对元素的多个级别进行选择

java - 在 Java 中以编程方式添加 <p> 标签

html - Jade-Template 中带有 if 条件的每个循环

html - XSLT 无法使用 xs :output 添加 DOCTYPE