Подтверждение jquerymobile не влияет на результат? - PullRequest
0 голосов
/ 30 мая 2011

Вот фрагмент из приложения jquerymobile. Это простой файловый менеджер, который позволяет удалять файлы, и я хочу подтвердить удаление. Я пытаюсь использовать JavaScript Подтверждение , чтобы дважды проверить, должно ли действие продолжаться; но кажется, что независимо от того, что я делаю, я не могу остановить это не произойдет.

<script type="text/javascript">
    $(document).ready(function(){
        $(".confirm").live("click",function(ev){
            var nam = $(this).html(),
                loc = $(this).attr('href'),
                answer = confirm("Are you sure you want to delete:\n\n" + nam);
            if (answer){
                return true;
                //window.location.href = loc;
            }else{
                ev.preventDefault();
                return false;
                window.location.href = window.location.href;
            }
        });
    });
</script>

...

<div data-role="page" data-theme="a">
    <div data-role="content">
        <ul data-role="listview" data-inset="true">
            ...
            <li><a class="confirm" href="?delete=#urlEncodedFormat(f.name)#">#f.name#</a></li>
        </ul>
    </div>
</div>

Вы можете видеть, что я пробовал 3 разных метода, чтобы предотвратить перенаправление ссылки на страницу, но ни один из них, похоже, не выполняет то, на что я надеялся. Что я делаю не так?

1 Ответ

2 голосов
/ 30 мая 2011

Вы используете .live, не понимая, как это работает.

Измените .live на .bind, и оно будет работать.

Кроме того, прочитайте о .live, чтобы узнать, что .live привязывается к документу и ловит события, когда они всплывают, поэтому уже слишком поздно предотвращать действия по умолчанию или что-либо еще.

И, кстати, - если вы поместите код после оператора return, существует небольшая вероятность того, что кто-то может запутаться, думая, что он действительно выполняется по какой-то странной причине.

[править]

Если вы хотите, чтобы он работал без javascript (прогрессивное улучшение и прочее), вам следует использовать диалоги, созданные на стороне сервера, с целью задать вопрос, даже если javascript нет.

Если вы не заботитесь о прогрессивном улучшении и хотите, чтобы оно работало только в высокопроизводительных браузерах, то почему вам не нужен href? переименуйте href в data-href и загрузите его, если пользователь подтвердит. Вам не нужно ничего предотвращать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...