2011-07-10 53 views
0

使用jQuery指标工作其实我也2个问题,在每个功能

首先,我要计算一个html页面的百分比,并通过附加它使用JavaScript返回。这工作正常,但它设置在任何地方相同的价值。我想我需要像'这个'这样的东西,但是我找不到如何让它工作。每个功能都不在里面,而是设置在任何地方。

另一个问题是var getalfavconvert = parseFloat(getalfav.substring(1));由于某种原因它返回一个奇怪的值。另一方面var getalconvert = parseFloat(getal.substring(1));工作正常。我认为这与链接有关。

的另一个问题是

$(".thing-shot ul").prepend('<li class="hammer">10%</li>'); 

$('.things li .group').each(function(index) { 

    // get value from page 
    var getal = $('.current-user-view').text(); 
    var getalfav = $('.fav.marked a').text(); 

    // convert value to float 
    var getalconvert = parseFloat(getal.substring(1)); 
    var getalfavconvert = parseFloat(getalfav.substring(1)); 

    //make a percentage calculation 
    var gedeeld = getalconvert/getalfavconvert; 
    var percentage = gedeeld*100; 

    // Set percentage in html 
    $(".hammer").text(percentage);   
}); 

这是李在HTML结构:

<li id="screenshot-2081" class="group"> 
    <div class="athing"> 
     <div class="thing-shot"> 
      <div class="thing-img"> 
       <a href="go.html" class="link"><img alt="teaser" src="teaser.png?1310142565" /></a> 
      </div> 

      <ul class="tools group"> 
       <li class="fav marked"> 
        <a href="go.html">21</a> 
       </li> 
       <li class="cmnt current-user-cmnt 
        "> 
        <a href="#">6</a> 
       </li> 
       <li class="views current-user-view"> 
        276 
       </li> 
      </ul> 
     </div> 
     <div class="extras"> 

     </div> 
    </div> 
</li> 
+0

你有一些锤子类的元素?他们是什么(或它)? –

+0

抱歉忘记了,我已将它添加到JavaScript。这行:$(“。shot ul”)。prepend('

  • 0%
  • '); – Max

    +0

    @Max:'.shot ul'与'.things li .group'有关吗? –

    回答

    1

    你拥有的“改变一切无处不在”的问题是一个相当普遍的一个,因为你选择全部某一类的对象。您想要做的是使用通过使用$(this),使用.children()选择器找到每个对象的儿童

    我已经编辑您的jQuery来反映这些变化:

    $(".shot ul").prepend('<li class="hammer">0%</li>'); 
    
    $('.things li .group').each(function(index) 
    { 
        // get value from page 
        var getal = $(this).children('.current-user-view').text(); 
        var getalfav = $(this).children('.fav.marked').find("a").text(); 
    
        // convert value to float 
        var getalconvert = parseFloat(getal.substring(1)); 
        var getalfavconvert = parseFloat(getalfav.substring(1)); 
    
        //make a percentage calculation 
        var gedeeld = getalconvert/getalfavconvert; 
        var percentage = gedeeld*100; 
    
        // Set percentage in html 
        $(this).children(".hammer").text(percentage); 
    }); 
    

    编辑

    如果你看一下上面的代码,你会看到

    var getalfav = $(this).children('.fav.marked').find("a").text();

    这里的关键是.find("a") - 实际的<a>标签不是子<ul>,但子.children()不喜欢,因此.find()。另一种方式来做到这一点是这样的:

    var getalfav = $(this).children('.fav.marked').text();

    这仍然给出了正确的值,因为.text()条从内容全部HTML,只是让你用一个数字。我建议使用.find()方法,因为它更容易阅读和语义更正,以及任何其他添加的内容都会搞砸。

    看一看at this JSFiddle为例:-)

    +0

    太棒了!工作! Thanx,现在仍然有点问题:这不会返回任何内容:var getalfav = $(this).children('。fav.marked a')。text(); – Max

    +0

    对不起!请参阅我的编辑。 – Bojangles