2016-04-08 42 views
0

我有jQuery或JavaScript的问题。我使用引导CSS框架。在这个问题中,我有一个相同的脚本,我放在不同的地方。但脚本根本不起作用。你可以看到剪切帮助我。我使用引导CSS框架我怀疑,我不知道如何使不同的地方在页面中的所有相同的脚本是不同的。我不明白最后一个。希望你的理解。提前致谢!JavaScript或jQuery文件具有相同的脚本不同的地方不同

/* this the script.js */ 
 

 
$("#image").find("img").each(function(){ 
 
     var $this = $(this), 
 
      getClass = $this.attr('img') 
 
      splitClass = $this.prop('id').split("-") 
 
      if(splitClass[1] <= 20) { 
 
       $this.attr("src", "http://lorempicsum.com/futurama/350/200/1"); 
 

 
      } else if(splitClass[1] >= 40) { 
 
       $this.attr("src", "http://www.top13.net/wp-content/uploads/2014/11/4-small-flowers.jpg"); 
 

 
      } else { 
 
       $this.attr("src", "http://www.top13.net/wp-content/uploads/2014/11/4-small-flowers.jpg"); 
 
      } 
 
     }); 
 
\t
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="row"> 
 
\t <div class="col-xs-6 col-sm-12 col-md-12 col-lg-12"> 
 
\t \t <div id="image"> 
 
\t \t \t <div class="thumbnail"> 
 
\t \t \t \t <img id="img-1" src="http://www.cma.rw/sites/default/files/default_images/default_image1.gif" /> 
 
\t \t \t </div> 
 
\t \t \t <div class="thumbnail"> 
 
\t \t \t \t <img id="img-2" src="http://www.cma.rw/sites/default/files/default_images/default_image1.gif" /> 
 
\t \t \t </div> 
 
\t \t </div> 
 
<!---this the script----> 
 
    <script src="script.js"></script> 
 
\t </div> 
 
</div> 
 
<!------ Many Text in here ------------> 
 
\t <p>the script in top is working but the script in bottom is not working because there is same script. how can i set be same work. with only one script the text must be in here. help me</p> 
 
\t \t 
 
<!----------------------> \t 
 
<div class="row"> 
 
\t <div class="col-xs-6 col-sm-12 col-md-12 col-lg-12"> 
 
\t \t <div id="image"> 
 
\t \t \t <div class="thumbnail"> 
 
\t \t \t \t <img id="img-3" src="http://www.cma.rw/sites/default/files/default_images/default_image1.gif" /> 
 
\t \t \t </div> 
 
\t \t \t <div class="thumbnail"> 
 
\t \t \t \t <img id="img-4" src="http://www.cma.rw/sites/default/files/default_images/default_image1.gif" /> 
 
\t \t \t </div> 
 
\t \t </div> 
 
<!---this the same script with the top script----> 
 
    <script src="script.js"></script> 
 
\t </div> 
 
</div>

+0

你得到一个错误或记录在控制台中的任何类型的信息? –

+0

@ amura.cxg你的意思是? –

+1

请参阅https://jsfiddle.net/69Lkwpuo/ –

回答

1

试试这个:

$("#image img").each(function(){ 
    var $this = $(this), 
    getClass = $this.attr('img') 
    splitClass = $this.prop('id').split("-") 
    if(splitClass[1] <= 20) { 
     $this.attr("src", "http://lorempicsum.com/futurama/350/200/1"); 

    } else if(splitClass[1] >= 40) { 
     $this.attr("src", "http://www.top13.net/wp-content/uploads/2014/11/4-small-flowers.jpg"); 

    } else { 
     $this.attr("src", "http://www.top13.net/wp-content/uploads/2014/11/4-small-flowers.jpg"); 
    } 
}); 

Fiddle

---在你原来的代码$("#image").find("img")只会id为#image选择第一div。而$("#image img")将选择所有img s,它们是编号为#image的元素的子元素。

为什么find()似乎无法在由$("#image")返回的每个元素上工作我不确定。如果有人可以解释这个,我很乐意听到它.---

正如Pete指出的,原始选择器是一个只返回第一个匹配元素的id。请参阅下面使用类的解决方案。

编辑

正如已经指出的那样,ID应该是唯一的。下面是不使用重复ID的更好的解决方案。

$(".image img").each(function() { 
    var $this = $(this), 
     getClass = $this.attr('img') 
    splitClass = $this.prop('id').split("-") 
    if (splitClass[1] <= 20) { 
     $this.attr("src", "http://lorempicsum.com/futurama/350/200/1"); 

    } else if (splitClass[1] >= 40) { 
     $this.attr("src", "http://www.top13.net/wp-content/uploads/2014/11/4-small-flowers.jpg"); 

    } else { 
     $this.attr("src", "http://www.top13.net/wp-content/uploads/2014/11/4-small-flowers.jpg"); 
    } 
}); 

Fiddle

+1

回应为什么find没有在$(“#image”)返回的“每个”元素上工作 - 它只会返回一个元素 - 它是一个id,因此只会选择第一个具有该id的元素,因为id是独特的 – Pete

+0

是JavaScript上的图像src只能加载源“http:”?我想离线使用它。没有连接到互联网。那可以吗? –

+0

@佩特谢谢,我没有意识到这一点。我从不使用多个ID,所以我只是假定他们和其他选择器一样。 –

相关问题