Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Web > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 02.12.2013, 10:02   #1
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 768
Сообщение Зачем здесь live?

Есть вьюшка
Код:
<h2>Адресная книга</h2>
<div id="table" style="width: 45%">
    <table class="table table-bordered table-condensed ">
        <thead>
            <tr>
                <th>Имя</th>
                <th>Фамилия</th>
                <th>Адресс</th>
                <th>Редактировать</th>
                <th>Удалить</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var name in  Model)
            {
                <tr>
                    <th>@name.FirstName</th>
                    <th>@name.LastName</th>
                    <th>@name.Adress.adress</th> 
                    <th>@Html.ActionLink("Редактировать","edit",new {id=name.id})</th>
                    <th>@Html.ActionLink("Удалить", "delete", new { name_id = name.id })</th>
                </tr>
            }
        </tbody>
    </table>
</div>
            
<p>
@using (Ajax.BeginForm("Sort","Home", new AjaxOptions { UpdateTargetId = "table" }, new {style="float:left"}))
{
    <input type="hidden" name="order" value="orderby" />
    <input type="submit" value="Сортировка" id="input"  />
}
 
@using (Html.BeginForm("ADD","Home"))
{
  
    <input type="submit" value="Добавить"   />
}
</p>
есть код javascript,который переключает значение скрытого поля
Код:
<script type="text/javascript">
    var bool = false;
   
 
        $('#input').live("click",function () {
            if (bool) {
                $("[type='hidden']").attr("value", "orderbydistinct");
            }
            else {
                $("[type='hidden']").attr("value", "orderby");
            }
            if (bool) {
                bool = false;
            } else {
                bool = true;
            }
            
        });
не могу понять почему без live при ajax запросе,а скажем просто написав $('#input').click(function () {}); перестает работать кнопка? мы же этот элемент заново не добавляем на страницу-он уже есть.
ts-alan вне форума Ответить с цитированием
Старый 02.12.2013, 10:44   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Быть может выполняется код до построения DOM'а, когда элемента #input ещё нет?
Попробуйте написать с обработчиком click в $(document).ready.

[зануда]
Код:
if (bool) {
    bool = false;
} else {
    bool = true;
}
Код:
bool = !bool;
[/зануда]
^-.-^ Клавогонки.ру - набирай скорость!
Fenex вне форума Ответить с цитированием
Старый 02.12.2013, 10:51   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Live:
Цитата:
Attach an event handler for all elements which match the current selector, now and in the future.
Т.е. назначает обработчик клика твоему инпуту.
Цитата:
As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live().
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.12.2013, 11:44   #4
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 768
Сообщение

так по идее обработчик назначается только тем элиментам -которые должны появиться после,input уже есть на странице и не подтягивается ajax-ом или джаваскриптом
ts-alan вне форума Ответить с цитированием
Старый 02.12.2013, 15:18   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Написано:
Цитата:
now and in the future.
Короче говоря "отныне и вовеки".
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.12.2013, 15:43   #6
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 768
Сообщение

Я это понимаю-но почему без лайва обычным $().click не работает?
ts-alan вне форума Ответить с цитированием
Старый 03.12.2013, 09:37   #7
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Потому что он еще не создан.
Код:
console.log( $('#input') )
чтобы убедиться в этом
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 03.12.2013, 10:05   #8
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 768
Сообщение

Проверял вроде есть.Скрипт работает только один раз если стоит $().click вместо live. потом выполняется Ajax.BeginForm и кнопка перестаёт работать.Возможно после Ajax.BeginForm что-то происходит)))

Последний раз редактировалось ts-alan; 03.12.2013 в 11:03.
ts-alan вне форума Ответить с цитированием
Старый 03.12.2013, 10:37   #9
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Этак без самого кода можно придумать уйму причин, почему не работает. Но в конечном счёте все сведётся к двум вещам: элемента #input либо не существует при попытке навесить событие, либо элемент заменяется (на тот же самый).
^-.-^ Клавогонки.ру - набирай скорость!
Fenex вне форума Ответить с цитированием
Старый 03.12.2013, 10:43   #10
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,377
По умолчанию

Цитата:
Сообщение от ts-alan Посмотреть сообщение
Я это понимаю-но почему без лайва обычным $().click не работает?
Функция лайв работает на лету, то есть создает обработчик для существующих элементов и будущих.
З.Ы. Зачем спрашивать, если можно посмотреть док-цию по jq.
uberchel вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Live Flash SPNT Помощь студентам 0 25.10.2013 20:13
Live поиск Provenzano JavaScript, Ajax 0 22.09.2012 13:34
Вопрос о Live-чате tronuo PHP 1 21.07.2012 14:33
JQuery live() KREGI JavaScript, Ajax 0 21.06.2011 22:37
здесь есть программисты? Или здесь просто посмотрим. morekaifa Фриланс 1 08.04.2011 19:34


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS