Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Исправление ошибки Uncaught TypeError: undefined is not a function (https://javascript.ru/forum/css-html/53538-ispravlenie-oshibki-uncaught-typeerror-undefined-not-function.html)

DevOlegKosarev 08.02.2015 02:48

Исправление ошибки Uncaught TypeError: undefined is not a function
 
есть разметка которая выводит по циклу
<li>
                    <img class="portrait" src="assets/images/plants/<?php echo $row_ground['id_plant']; ?>.jpg" alt="<?php echo $row_id_plant['name']; ?>" title="Петрушка" height="48" width="48">
                    <div>
                        <span class="title"><?php echo $row_id_plant['name']; ?><?php echo $row_ground['id']; ?></span>
                        <span id="harvest" class="small minor">
                            (Урожай через <span data-countdown-harvest="<?php echo $date_harvest; ?>"></span>)
                        </span>
                    </div>
                    <div id="actions">
                        <div class="small minor"><span>Полив через <span data-countdown-water="<?php echo $date_water; ?>"></span></span></div>
                    </div>
                    <div style="clear:both"></div>
                </li>


и есть

$('[data-countdown-harvest]').each(function () {
        var $this = $(this), finalDate = $(this).data('countdown-harvest');
        $this.countdown(finalDate, function (event) {
            $this.html(event.strftime('%H часов %M  минут %S секунд')).on('finish.countdown', function (event) {
                $(this).parent()
                       $(this).parent().$("div#actions").replaceWith('<img alt="" src="assets/images/icons/harvest.png" height="16" width="16"> <a href="#">___</a>')
            });
        });
    });


пишет вот такую ошибку
TypeError: $(...).parent(...).$ is not a function

однако если пишу БЕЗ $(this).parent() то добовлять ко всем. Помогите исправить... Зарание Большое спасибо.

рони 08.02.2015 03:18

DevOlegKosarev,
вас есть трудно понять но может это вы хочет
$(this).parent().parent().addClass('disabled')
или
$(this).parents('li').addClass('disabled')

или

$this.parents('li').addClass('disabled')
если не помогло
то писать макет где проверить

DevOlegKosarev 08.02.2015 03:43

Цитата:

Сообщение от рони (Сообщение 355589)
DevOlegKosarev,
вас есть трудно понять но может это вы хочет
$(this).parent().parent().addClass('disabled')
или
$(this).parents('li').addClass('disabled')

или

$this.parents('li').addClass('disabled')
если не помогло
то писать макет где проверить

Мне надо что бы
1) к <span id="harvest" class="small minor"> класс добавился disable
2) и <div id="actions"> заменилась другим текстом

Дабился вот чего
$(this).parent()
                        .addClass('disabled')                     
                        .parent().next().replaceWith('<img alt="" src="assets/images/icons/harvest.png" height="16" width="16"> <a href="#">Собрать урожай</a>');


Класс добовляется так как надо.
А вот с заменой получяется что он удоляет вначале полнастью <div id="actions"> и что есть внутри и заместо него ставить... Самый простой спосаб конечно засунуть в <div id="actions"> ещё один span например и в него пихать. или в js дописать сам див... Но хочется всё таки понять как рашить... Вить если я писал $("div#actions").replaceWith то какрас и заменялось всё что есть в данном диве...


Часовой пояс GMT +3, время: 15:08.