В моей функции диалога мне нужно установить, что я являюсь "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");
});
Просто объявите его вне слушателей и измените щелчок следующим образом:
$(".reqtalk").on("click", function(e) {
I = $(this).attr('id');
e.preventDefault();
$("#reqtalkdialog").dialog("open");
});
Также удалите переменную, назначаемую внутри диалоговой функции: http://jsfiddle.net/NYWg2/9/
(нажмите кнопку "Да", чтобы увидеть предупреждение "I")
Я обновил ваш 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);
});
Вы можете использовать диалог:
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");
});