Как получить значение href из ссылки, которая открыла диалоговое окно Jquery UI - PullRequest
0 голосов
/ 27 октября 2009

Я только начал изучать Jquery и плохо знаком с написанием javascript (я слишком стар, чтобы писать noob, это кажется неправильным).

Сценарий: у меня есть гиперссылка, которая открывает диалоговое окно и устанавливает cookie. Диалоговое окно спрашивает что-то вроде: «Вы бы хотели посетить эту страницу?», На ней есть кнопки «Да / Нет».

Если пользователь нажимает «да», я бы хотел, чтобы скрипт восстановил первоначально нажатую ссылку и перешел на эту страницу. Я сделал это, получив значение куки. Хотя это работает, я уверен, что я мог бы сделать это с переменной, но я не знаю как, поскольку диалоговое окно находится в отдельной функции.

Итак, мой вопрос: могу ли я использовать переменную, которая устанавливает cookie, и привязать его к кнопке да в диалоге? Как будет выглядеть синтаксис?

заранее спасибо

Hairby

код ниже

<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("a").click(function () {
      var cookieset = $(this).attr("href");
      $.cookie("redirectcookie", cookieset, { path: '', expires: 7 });
      $('#dialog').dialog('open');
                    $(".ui-dialog-titlebar-close").hide();
                    return false;           

});

$('#dialog').dialog({
                    autoOpen: false,
                    width: 600,
                    buttons: {
                        "Yes": function() { 
                window.location = 'http://www.mysite.com'+ $.cookie("redirectcookie")       
                    }, 
                        "Cancel": function() { 

                        } 
                    }

                });
    });
    </script>

Ответы [ 2 ]

1 голос
/ 27 октября 2009

Существует опция метода , которую можно использовать для добавления кнопок при нажатии на ссылку вместо их добавления при создании диалога:

$("a").click(function () {

    var $link = $(this);

    $('#dialog').dialog('option', 'buttons', {
        "Yes": function() { 
            window.location = $link.attr("href");          
        }, 
        "Cancel": function() { 
            $('#dialog').dialog( 'close' );
        } 
    });

    $('#dialog').dialog('open');
    $(".ui-dialog-titlebar-close").hide();
    return false;
});


$('#dialog').dialog({
    autoOpen: false,
    width: 600
});

Обратите внимание, я сохранил "$ (this);" в переменной с именем «$ link», потому что «this» имеет другое значение, внутри функций обратного вызова оно указывает на объект диалогового окна.

EDIT:
Происходит следующее: когда документ готов, выбирается «а», и к нему привязывается функция щелчка. Сама функция не выполняется, но срабатывает, когда пользователь нажимает на ссылку. Во-вторых, все еще в событии готовности выбрано "#dialog" и создан новый диалог. Единственный аргумент - это объект, который содержит два свойства: «autoOpen» и «width». Вот и все, готово сделано.
Когда пользователь теперь щелкает ссылку, данная функция выполняется. Он делает следующие вещи:

  1. сохранить ссылку на «это», по какой ссылке кликнули. Обратите внимание, я сохранил «$ (this)» вместо «this» и поэтому назвал переменную «$ link» вместо «link». Это своего рода соглашение jQuery.
  2. установить параметр "кнопки" в диалоговом окне. Аргументом является объект, который содержит свойства «Да» и «Отмена», а значение обоих - это функция, которая будет вызываться при нажатии. Первая меняет местоположение на href ссылок, вторая закрывает всплывающее окно
  3. "dialog ('open')" открывает диалог.
  4. ". Ui-dialog-titlebar-close" скрывается
  5. функция click возвращает false, поэтому ссылки href не выполняются
0 голосов
/ 27 октября 2009

Вы можете использовать функцию данных jQuery для хранения данных вместо использования файла cookie

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