【问题标题】:How can I apply a jQuery function to all elements with the same class.?如何将 jQuery 函数应用于具有相同类的所有元素。?
【发布时间】:2014-11-19 20:07:05
【问题描述】:

所有同名的JQuery返回值class= 2.53(第一个元素值应用于所有Span)

如何获得不同的值?

(编辑:)HTML代码:

<div class='ratingInfo'>
    <table class='rating_table' border='0' cellpadding='0' cellspacing='0'>
      <tbody>
        <tr>
          <td>
             <div class='review-rating'>10</div>
          </td>
          <td>
             <div class='stars1'></div>
          </td>
        </tr>
      </tbody>
    </table>
</div>


<div class='ratingInfo'>
    <table class='rating_table' border='0' cellpadding='0' cellspacing='0'>
       <tbody>
          <tr>
            <td>
                <div class='review-rating'>1</div>
            </td>
            <td>
              <div class='stars1'></div>
            </td>
          </tr>
        </tbody>
     </table>
 </div>

JavaScript

 $( document ).ready(function() {
    $( ".stars1" ).html("<span class='stars'>"+$('.review-rating').text()+"</span>");
    $('span.stars').stars();
 });

 $.fn.stars = function() {
    return $(this).each(function() {
        $(this).html($('<span />').width(Math.max(0, (Math.min(5,   parseFloat($(this).html())))) * 16));
    });
 }

【问题讨论】:

  • P.S.在您的 $.fn.stars 函数中,this 已经 是一个 jQuery 对象。你可以做return this.each(function(){ //... });
  • 这不是问题的解决方案,我只是指出来。
  • 在没有桌子的情况下工作正常,为什么会这样。?

标签: javascript jquery html


【解决方案1】:

因为$('.review-rating').text() 每次都在抓取第一个元素,所以它不知道你想要元素旁边的那个。您需要对其进行编码以查看那里。

$( ".stars1" ).each( function () {
    var star = $(this);
    star.html("<span class='stars'>" + star.prev('.review-rating').text() + "</span>");
});

对于新的 HTML 代码,上面的代码将不起作用,因为元素不是同级元素。这就是为什么拥有实际代码很重要的原因!您需要寻找一个共同的父元素并在其中找到元素,在这种情况下,您拥有包含两者的 TR。所以要获得父母,请使用最接近()

$( ".stars1" ).each( function () {
    var star = $(this);
    var rating = star.closest("tr").find(".review-rating").text();
    star.html("<span class='stars'>" + rating + "</span>");
});

【讨论】:

  • 感谢您的快速解决方案,但在 span 上没有返回任何值。那些是空的。在 javaScript 演示中尝试过它工作完美但不在我的页面中。?
  • 当然它不适用于该 HTML,因为该元素不是同级元素......
猜你喜欢
  • 2012-12-25
  • 1970-01-01
  • 2017-10-30
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多