Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2013, 11:02   #1
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 825
Сообщение Зачем здесь 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
Сообщений: 823
По умолчанию

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

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

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
Сообщений: 825
Сообщение

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

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

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

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

Проверял вроде есть.Скрипт работает только один раз если стоит $().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
Сообщений: 823
По умолчанию

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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