Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryui动态对话框_Javascript_Jquery_Dynamic_Dialog - Fatal编程技术网

Javascript jqueryui动态对话框

Javascript jqueryui动态对话框,javascript,jquery,dynamic,dialog,Javascript,Jquery,Dynamic,Dialog,我对js和jquery相当陌生。我基本上希望能够从onClick事件或附加到您将两次连接事件,一次通过onclick,一次通过jQuery。你需要选一个 如果选择jQuery方式(推荐),您将获得jQuery参数(这只是一个arg,event)。但是,jQuery会将this设置为触发事件的元素(在本例中是您的A标记)。您可以使用它从标记中获取数据 例如,若您想要一个被点击的对象的ID,您可以在处理程序中执行以下操作: var clickedId = $(this).attr('id'); 如

我对js和jquery相当陌生。我基本上希望能够从onClick事件或附加到
您将两次连接事件,一次通过onclick,一次通过jQuery。你需要选一个

如果选择jQuery方式(推荐),您将获得jQuery参数(这只是一个arg,event)。但是,jQuery会将
this
设置为触发事件的元素(在本例中是您的A标记)。您可以使用它从标记中获取数据

例如,若您想要一个被点击的对象的ID,您可以在处理程序中执行以下操作:

var clickedId = $(this).attr('id');
如果您想为每个标签存储一些任意信息(例如“tableName”),您可以使用HTML5数据属性(更好),也可以只编写自己的属性(这会起作用,但“格式不好”)。例如:

<a tableName='testimonials'>

var clickedFoo = $(this).attr('tableName');

var clickedFoo=$(this.attr('tableName');
或者(稍微好一点):


var clickedTableName=$(this.attr('data-tableName');
//此外,我相信这会起作用:
var clickedTableName=$(this.data('tableName');
*编辑*

为了进一步澄清,基本的总体思路是:

1) 您可以通过PHP将A标记写入页面

1A)当您写出它们时,您将特定于它们的任何数据以一个或多个属性的形式(例如,
id='foo'data bar='baz'
)放在A标记上

2) 您还编写了一些Javascript代码,上面写着“嘿,每当单击标记时,运行这个函数”

3) 在连接到A标记的click事件的函数中,使用
this
变量(指向A标记本身)获取所需的数据(“变量”)

3A)例如,您可以使用JQuery“attr”方法:
$(this.attr('id')


4) 利润!(或者至少对刚得到的数据做一些有用的事情)

您可能希望在函数周围放置
$(document).ready()
,初始化对话框并绑定onclick事件。然后打开ajax请求回调中的对话框

我想,这样就可以用loadFunction取消onclick属性。(累了)

比如:

HTML:

<a href="#" id="trigger" data-my-id="123" data-my-table="myTable">
  trigger
</a>

<div id="dialog">
 Dialog Contents....
</div>
$(document).ready(function() {


    $("#dialog").dialog({
        autoOpen: false,
        height: 600,
        width: 700,
        modal: true,
        buttons: {
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });

    $("#trigger").click(function() {

        var id = parseInt( $(this).attr('data-my-id');
        var table = $(this).attr('data-my-table');

        $("#dialog").load("table_render.php?id=" + id + "&table=" + table + "", 
          function(){
            $("#dialog").dialog("open");
          });
    });

});​

我应该做这个把戏。

所以我让它工作了。。。这是解决办法

function createViewer(id, table) {
        var id;
        var table;
        $("#dialog-view").dialog({
            autoOpen: false,
            width:650,
            minHeight:400,
            show:{effect: "fade", duration: 500},
            hide:"clip",
            resizable: false,
            modal: true,
            buttons: {
                "Close": function () {
                    $(this).dialog("close");
                }
            }
        });
        $("#dialog-view").load("table_render.php?id=" + id + "&table=" + table + "").dialog("open");
    };
和内联代码

<a href="#" onMouseDown="createViewer(<?php echo $row_testimonials['id'];?>,'testimonials');">View Quote</a>


我很困惑:看起来您已经在传递两个变量(推荐和1)?是的。表名和id。只是概念证明,这样我就可以在我的php中实现它。对,所以您的示例代码已经传递了两个变量,但您的问题是“有没有一种方法可以将变量从a传递到函数?”。。。那没有道理。为什么你需要知道如何去做一些你已经知道如何去做的事情(因为你正在做)?好吧,它不起作用,所以我想知道问题是什么。。例如,如果我正确地传递了变量。etc jQuery click处理程序可能与onclick属性冲突。像onclick属性这样的内联处理程序很难处理,而且不必要。jQuery中内置的事件处理功能更强大,更易于使用。我知道如何做到这一点。但是为了弄清楚问题是什么,我简化了它,所以我现在不必处理wphp。如果您可以在DOM中找到表名,那么您可以通过这种方式获得它;例如,您可以执行
$(this).parents('table:first').attr('name')
P.P.S在DOM中存储数据可能是您(尤其是作为PHP er)最方便的事情,但就一般JS设计而言,您几乎肯定最好以某种方式将数据存储在Javascript中。我理解您的目的。但我的执行技能有点。。。缺乏。有没有一种方法可以像我的示例中那样从a href触发函数并传递变量?因为到目前为止,这些变量似乎还没有被传递。这是因为我没有定义var id吗?但我会先这样尝试,然后看看。好的,我知道你在做什么。但是我如何将我的id和表从内联a onclick传递到这个?您可以将它们存储在数据属性中,而不是存储在conclick中,并使用jquerys
attr()
(编辑答案)访问它们。是的,这就是@machine上面所说的。但我更喜欢用我贴出来作为答案的方式。为了简单起见
function createViewer(id, table) {
        var id;
        var table;
        $("#dialog-view").dialog({
            autoOpen: false,
            width:650,
            minHeight:400,
            show:{effect: "fade", duration: 500},
            hide:"clip",
            resizable: false,
            modal: true,
            buttons: {
                "Close": function () {
                    $(this).dialog("close");
                }
            }
        });
        $("#dialog-view").load("table_render.php?id=" + id + "&table=" + table + "").dialog("open");
    };
<a href="#" onMouseDown="createViewer(<?php echo $row_testimonials['id'];?>,'testimonials');">View Quote</a>