我想将变量传递给jquery对话框窗口。我正在使用经典的ASP并且onyl真的触及了jquery的世界。我花了几个小时研究和使用.data方法,但遇到了麻烦。你的时间和帮助非常多!
这是我的精简页面:
$(function(){
// Dialog
$('#dialog').dialog({
autoOpen: false,
show: "slide",
hide: "fade",
width: 452,
modal: true,
buttons: {
"Ok": function() {
PostItNote.submit();
$(this).dialog("close");
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
// Dialog Link
$('#dialog_link').click(function(){
$('#dialog').dialog('open');
return false;
});
});
这就是我调用窗口的方式:
<a href='#' id='dialog_link' CLASS='OrangeButton'> Show Window </a>
和我窗口的内容:
<div ID="dialog" TITLE="Periodic Report">
stuff here
</div>
为什么我不能这样做:
<a href='#' id='dialog_link(someValue)' CLASS='OrangeButton'> Show Window </a>
提前谢谢
如何在ASP循环中使用它:
do until Products.EOF
--other code here---
<a href='#' id='dialog_link(Products(0))' CLASS='OrangeButton'>
--other code here---
products.moveNext
loop
答案 0 :(得分:1)
对话框只是您网页上的div
,因此无法真正“传递”某个值。但它可以被范围内的任何JavaScript变量操纵。您可以更改单击处理程序以使用变量来操作对话框:
var myVariable = "Some new text for the dialog";
$('#dialog_link').click(function(){
//New code to "pass" a value to the dialog
$('#dialog').text(myVariable);
$('#dialog').dialog('open');
return false;
});
或者您可以使用对话框的open
成员:
...
width: 452,
open: function() { $('#dialog').text(myVariable); },
modal: true,
...
要在对话框div
打开时对其进行更改。
代码id='dialog_link(someValue)'
不会执行任何操作,因为id
属性无法进行函数调用,只有onchange
之类的事件处理程序才能执行此操作。即使可以,dialog_link
也不是可以传递值的函数。它只是另一个元素的id
。
我相信您可能已经知道了,但jQuery文档非常有用 - here are the docs for dialog.
回复您的评论:我会删除$('#dialog_link').click();
语句并将链接代码更改为以下内容:
<a href='#' class='OrangeButton' onclick='openDialog(someValue);'>Show Window</a>
然后添加要在click事件上调用的JavaScript函数:
function openDialog(value) {
$('#dialog').text(value);
$('#dialog').dialog('open');
}
在ASP循环中,这样的东西应该可以解决问题:
Response.Write("<a href='#' onclick='openDialog(" & Products(0) & ");'>Show</a>")
这将在页面上创建一个<a></a>
元素,其中onclick
处理程序将所需的值传递给openDialog
,使对话框可以访问它。
我稍微更改了链接的代码,以便它全部适合一行,但如果您愿意,可以随时添加class='OrangeButton'
以及所有内容。