JQuery Выберите переменную из внешней функции

0

В моей функции диалога мне нужно установить, что я являюсь "id" класса, который нажал (например, при нажатии на первый "+ Talk" он должен установить я = 100006. С моим текущим скриптом он установит, что я должен быть 'reqtalkdialog.

Как я могу получить его вместо идентификатора?

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

Сценарий: http://jsfiddle.net/MCam435/NYWg2/8/

HTML:

<div id="reqtalkdialog" title="Confirmation Required">
  Would you like to request contact?
</div>

<div id="reqtalk100006" style="display:block"><a href="#" class="reqtalk" id="100006">
<span class="reqtalk_b"> + Talk </span></a> - 100006</div>

<div id="reqtalk100001" style="display:block"><a href="#" class="reqtalk" id="100001">
<span class="reqtalk_b"> + Talk </span></a> - 100001</div>

Jquery:

$("#reqtalkdialog").dialog({
   autoOpen: false,
   modal: true,
   buttons : {
        "Yes" : function() {
            var element = $(this);
            var I = element.attr("id");
            var info = 'id=' + I;

            $.ajax({
                type: "POST",
                url: "resource/talkrequest.php",
                data: info,
                success: function(){}
            });

            $("#reqtalk"+I).hide();
            $("#talking"+I).show();
            //return false;

            $(this).dialog("close");           
            },

        "Cancel" : function() {
          $(this).dialog("close");
        }
      }
    });

$(".reqtalk").on("click", function(e) {
    e.preventDefault();
    $("#reqtalkdialog").dialog("open");
});
Теги:

3 ответа

1
Лучший ответ

Просто объявите его вне слушателей и измените щелчок следующим образом:

$(".reqtalk").on("click", function(e) {
    I = $(this).attr('id');
    e.preventDefault();
    $("#reqtalkdialog").dialog("open");
});

Также удалите переменную, назначаемую внутри диалоговой функции: http://jsfiddle.net/NYWg2/9/

(нажмите кнопку "Да", чтобы увидеть предупреждение "I")

  • 0
    Это потрясающе, спасибо. Я думал, что это был простой случай изменения того, где это было объявлено, но я не мог обдумать это.
  • 0
    Извините за поздний ответ, но я рад, что смог помочь ^ _ ^
1

Я обновил ваш jsfiddle и ниже - это то, что я получил, возможно, не лучший способ, но он работает.

HTML

<div id="reqtalkdialog" title="Confirmation Required">
  Would you like to request contact?
</div>

<div id="reqtalk100006" style="display:block"><a href="#" class="reqtalk" id="100006"><span class="reqtalk_b"> + Talk </span></a> - 100006</div>

<div id="reqtalk100001" style="display:block"><a href="#" class="reqtalk" id="100001"><span class="reqtalk_b"> + Talk </span></a> - 100001</div>
<input type="hidden" id="clickedNumber" value=""/>

JS

$("#reqtalkdialog").dialog({
    autoOpen: false,
    modal: true,
    buttons: {
        "Yes": function() {
            var numberToHide = $('#clickedNumber').val()
            //alert($('#clickedNumber').val());
            var element = $(this);
            var I = element.attr("id");
            var info = 'id=' + I;
            $.ajax({
                type: "POST",
                url: "resource/talkrequest.php",
                data: info,
                success: function() {}
            });
            $("#reqtalk" + numberToHide).hide();
            $("#talking" + numberToHide).show();
            //return false;
            $(this).dialog("close");
        },
        "Cancel": function() {
            $(this).dialog("close");
        }
    }
});
$(".reqtalk").on("click", function(e) {
    e.preventDefault();
    $("#reqtalkdialog").dialog("open");
    $('#clickedNumber').val(this.id);
});
1

Вы можете использовать диалог:

var element = $(this);
var I = element.dialog('option', 'currentId');

и в случае:

$(".reqtalk").on("click", function(e) {
    e.preventDefault();
    $("#reqtalkdialog").dialog('option', 'currentId', $(this).attr('id')).dialog("open");
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню