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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 02.12.2013, 11:02   #1
ts-alan
Участник клуба
 
Регистрация: 07.07.2010
Сообщений: 764
Репутация: 38
Сообщение Зачем здесь 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, 11:44   #2
Fenex
Участник клуба
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
Репутация: 439
По умолчанию

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

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

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, 12:44   #4
ts-alan
Участник клуба
 
Регистрация: 07.07.2010
Сообщений: 764
Репутация: 38
Сообщение

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

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

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

Потому что он еще не создан.
Код:
console.log( $('#input') )
чтобы убедиться в этом
__________________
Работаю. В этот раз за деньги.
Жду ваши искренние спасибы на яндекс-кошелек: 410011068154587
Naive вне форума   Ответить с цитированием
Старый 03.12.2013, 11:05   #8
ts-alan
Участник клуба
 
Регистрация: 07.07.2010
Сообщений: 764
Репутация: 38
Сообщение

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

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

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

icq: 468407295
skype: uberchel
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


15:13.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.