0

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

我已经让它工作起来,直到它应该将克隆的内容插入到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);
        }
    });
//};

这是小提琴。警报并不重要,我只是将它们插入以进行故障排除。

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

<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 秒重新运行一次。

4

3 回答 3

1

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

改变

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

find('.count').html(postCount)
于 2012-10-04T01:10:35.537 回答
0

关键问题:

  1. .alert()不是属性,不能像那样被链接。
  2. 在小提琴中;那个用户脚本 jQuery 代码不好(它在 Firefox 中中断,以及其他几个罪过)。省略 Fiddle 中的此类代码,因为它与所提出的问题无关,并且对大多数(可能是所有)用户来说都无法解决问题。
  3. 一旦包裹在函数 ( ) 中,除非从内部(或稍后注入的节点)NewPosts调用,否则代码不会触发。myFunction()<script>

小问题:

  1. 如果帖子计数只是文本(从示例 HTML 中看起来很可能,请不要使用.contents().html()。只需使用.text()
  2. 同样,除非内容包含 HTML 节点,尤其是事件侦听器,否则不需要/指向.clone().

无论如何,修复问题 1、2 和 3 会使代码看起来有效。看到这个小提琴

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 ();
于 2012-10-04T03:53:32.213 回答
0

至于注释代码:

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

更多内容:
似乎 .contents() 仅用作 getter,而不是您所暗示的 setter,.contents(postCount)请参阅api 参考

于 2012-10-04T01:00:20.080 回答