簡體   English   中英

jQuery函數內部的每個失敗

[英]Jquery each inside of function failing

我想編寫一個函數,將循環通過一系列的div的,單一的是包含的div small元素,克隆的內容small元素,通過另一塊在頁面上搜索,找到了li元素,其索引匹配循環中當前div的內容,然后將從小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);
        }
    });
//};

這是小提琴。 警報並不重要,我只是將其困在其中以進行故障排除。

根據建議,這基本上就是我開始使用的代碼:

<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>

編輯 :我不確定為什么,但是將內容從一個元素復制/粘貼到另一個元素的代碼部分突然開始工作。 我已經調整了幾件事,所以我不確定最終是怎么做的,但要注意!

但是,整個事情還是失敗了,因為我取消了包裝它的功能的注釋。 我需要它在一個函數中,以便它可以每30秒重新運行一次。

使用.html而不是.contents來注入數據。

更改

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

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

至於注釋的代碼:

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

更多的東西:
似乎.contents()僅用作getter,而不能像您對.contents(postCount)暗示的那樣使用setter參見api參考

關鍵的問題:

  1. .alert()不是屬性,不能這樣鏈接。
  2. 在小提琴中; 用戶腳本jQuery代碼不好(它在Firefox中中斷,還有其他幾項缺點)。 忽略小提琴中的此類代碼,因為它與所詢問的問題無關,並且對大多數(也許是所有)用戶而言,使小提琴無效。
  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 ();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM