Jquery每个函数内部都失败了

时间:2012-10-04 00:56:17

标签: javascript jquery

我正在尝试编写一个循环遍历一系列div的函数,单个包含small元素的div,克隆small元素的内容,搜索另一个块在页面上找到其索引与循环中当前div的索引匹配的li元素,然后将从小element克隆的内容插入该div中的span元素。

我已经开始工作,直到应该将克隆内容插入li的部分。什么都没发生。此外,当我尝试将其放入函数中时,整个事情都会失败,如我已注释掉的代码所示。任何帮助将不胜感激。

//function NewPosts(){
    jQuery('div.tracked_tags > div').each(function (i) {
        var thisIndex = jQuery(this).index();
        if (jQuery(this).find('small').length){

            var postCount = jQuery(this).find('small').contents().clone();
            //alert('Hey'+postCount.html()+''+thisIndex+'');

            jQuery('div#right_column ul#tracked_tags li:eq('+thisIndex+')').find('.count').contents(postCount).alert(postCount);
            //setTimeout(arguments.callee, 30000);
        }
    });
//};

Here's the fiddle.警报并不重要,我只是坚持进行故障排除。

根据建议,这基本上就是我开始使用的代码:

<div class="tracked_tags">
        <div>
                <small id="blah" class="count">10 new posts</small>
                                                    </a>
        </div>
        <div>
                <small id="blah2" class="count">5 new posts</small>
                                                    </a>
        </div>                      
</div>

<ul id="tracked_tags">
<li><a href=""><span class="count"></span></a></li>
<li><a href=""><span class="count"></span></a></li>
</ul>

这就是我想要的结果:

<ul id="tracked_tags">
<li><a href=""><span class="count">10 new posts</span></a></li>
<li><a href=""><span class="count">5 new posts</span></a></li>
</ul>

编辑:我不确定原因,但是将内容从一个元素复制/粘贴到另一个元素的代码部分突然开始工作。我已经调整了一些东西,所以我不知道到底是做了什么,但是huzzah!

然而,整个事情仍然失败的是我取消注释包装它的功能。我需要它在一个函数中,以便它可以每30秒重新运行一次。

3 个答案:

答案 0 :(得分:1)

使用.html而不是.contents来注入数据。

更改

find('.count').contents(postCount); 

find('.count').html(postCount)

答案 1 :(得分:0)

评论代码:

//function NewPosts(){
//};
   ^---REMOVE THIS

更多事情:
似乎.contents()仅作为getter使用,而不是像.contents(postCount)所暗示的那样设置为api reference

答案 2 :(得分:0)

关键问题:

  1. .alert()不是属性,不能被链接。
  2. 在小提琴中;用户脚本的jQuery代码并不好(它在Firefox中破坏了几个其他的罪行)。从小提琴中省略这样的代码,因为它与提出的问题无关,并打破了大多数(可能是所有)用户的小提琴。
  3. 一旦包含在函数(NewPosts)中,除非从myFunction()(或稍后注入的<script>节点)中调用,否则代码不会触发。
  4. 小问题:

    1. 如果帖子计数只是文字(可能来自示例HTML,请不要使用.contents().html()。只需使用.text()
    2. 同样,内容包含HTML节点,特别是对于事件侦听器,.clone()没有必要/点。
    3. 无论如何,修复问题1,2和3会使代码看起来有效。请参阅this fiddle

      function NewPosts () {
          jQuery('div.tracked_tags > div').each(function (i) {
              var thisIndex = jQuery(this).index();
              if (jQuery(this).find('small').length){
      
                  var postCount = jQuery(this).find('small').contents().clone();
                  //alert('Hey'+postCount.html()+''+thisIndex+'');
      
                  jQuery('div#right_column ul#tracked_tags li:eq('+thisIndex+')').find('.count').contents(postCount);
                  //setTimeout(arguments.callee, 30000);
              }
          });
      };
      
      NewPosts ();