Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Зачем здесь live?


Автор: tsalan 3.12.2013, 15:10
Есть вью
Код

<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 () {}); перестает работать кнопка? другими словами почему если поставить просто cllick и подтянув ajax страницу перестаёт работать это событие

Автор: jonie 3.12.2013, 18:53
1) live в JQuery устарел и не должно вообще использоваться. Используется сейчас on в связке с off
2) потому что так устроен JQuery, потому click работает только для созданных сейчас DOM элементов, а вот on позволяет подписать автоматом и вновь созданные.
3) а для того чтобы узнать как это работает внутри либо смотрите исходники , либо идите в javascript форум ))

Автор: tsalan 4.12.2013, 09:53
если не будет live -а будет просто click,то у меня перестает работать click после ajax(click не связан с вновь созданными элиментами,он остается на странице).т.е другими словами подтягивается часть страницы ajax без связанными с новой страницей элементами  click,и click перестает работать.Если ставлю live то всё работает. Возможной теорией является то что при ajax запросе часть страницы обновляется-а остальные элементы перезаписываются.Хотя может и глупая теория.Если у кого есть идеи поделитесь))

Автор: tsalan 5.12.2013, 13:28
Отключил в layout @Scripts.Render("~/bundles/modernizr") заработал просто click)))C чем это связано?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)