Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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 数组和while循环:使唯一可单击_Javascript_Jquery_Arrays_While Loop - Fatal编程技术网

Javascript 数组和while循环:使唯一可单击

Javascript 数组和while循环:使唯一可单击,javascript,jquery,arrays,while-loop,Javascript,Jquery,Arrays,While Loop,我有一个数组(通过ajax)如下所示: data[i].id: gives the id of user i data[i].name: gives the name of user i X Leonardo Da Vinci X Albert Einstein X William Shakespeare ... 我想像这样输出数组: data[i].id: gives the id of user i data[i].name: gives the name of user i X Le

我有一个数组(通过ajax)如下所示:

data[i].id: gives the id of user i
data[i].name: gives the name of user i
X Leonardo Da Vinci
X Albert Einstein
X William Shakespeare
...
我想像这样输出数组:

data[i].id: gives the id of user i
data[i].name: gives the name of user i
X Leonardo Da Vinci
X Albert Einstein
X William Shakespeare
...
X是必须可单击的图像(X.gif)。单击时,它必须转到functiontwo(),传递参数数据[i].id。Functiontwo将打开一个jquery对话框,问题是“删除id数据[i].id”

我知道这不会太难做到,但我似乎无法理解。。。 这就是我到目前为止所做的:

function functionone() {


    $.ajax({
        type : 'POST',
        url : 'post.php',
        dataType : 'json',
        success : function(data){

            var message = "";
            var i = 0;


            while (i < (data.length - 1))
                            {
                 var myvar = data[i].id;
                 message = message + "<div class=" + data[i].id + "><img src=x.gif></div>" + data[i].name + "<br />";


                 $('#somediv').html(message).fadeIn('fast');
                  $("." + data[i].id + "").click(function () {
                  functiontwo(myvar);
                });
                i++;

            }



        }


    });

}

 function functiontwo(id) {
 ...}
,仅可单击最后一个X

我怎样才能解决这个问题? 非常感谢

编辑:

这是我的第二个功能:

 function functiontwo(id) {

  $("#dialogdelete").dialog("open");

     $('#submitbutton').click(function () {

        $('#submitbutton').hide();
        $('.loading').show();
                    $.ajax({
        type : 'POST',
        url : 'delete.php',
        dataType : 'json',
        data: {
            id : id
        },
        success : function(data){

            var mess = data;
            $('.loading').hide();
            $('#message').html(mess).fadeIn('fast');


        }
    });

    //cancel the submit button default behaviours
    return false;



        });


    }

在delete.php中没有什么特别的,我使用了$\u POST['id']。

通常的技巧是创建一个单独的函数来创建事件处理程序。单独的函数将接收i作为参数,生成的事件将能够为自己保留此变量

make_event_handler(name){
    return function(){
        functiontwo(name);
    };
}

...

$("." + data[i].id + "").click( make_event_handler(myvar) );

正如我在评论中指出的那样。问题在于
。单击
零件。可以使用bind,也可以为所有元素使用一个类,以及类似以下内容的click事件
$('.classnamehere').live('click',function(){//stuff})

函数functionone(){
$.ajax({
键入:“POST”,
url:'post.php',
数据类型:“json”,
成功:功能(数据){
var message=“”;
var i=0;
而(i<(数据长度-1))
{
var myvar=data[i].id;
message=message+“”+数据[i]。name+“
”; $('#somediv').html(message.fadeIn('fast'); i++; } } }); } $('.clickable').live('click',函数(){ 警报($(this.attr('id')+'这是您的id'); });
第一步是使用绑定,而不是单击来创建事件侦听器。您能更具体一点吗?我尝试了
$(“+data[id].id+”).bind('click',function(){make\u event\u handler(myvar)})但这也不起作用…请看下面我的答案。课堂上的解决方案更简单,我认为这会起作用,但显然,一切都没有改变。最后一个X是可点击的,其余的不是…这应该可以做到。你能提供一个最小的功能示例(可能在JSFIDLE)吗?我已将
部分更改为
$(““+data[I].id+”).live('click',function(){functiontwo(myvar)})。这确实使每个X都可以单击,但是,传递给函数的参数(在myvar的情况下)总是相同的:最后一个用户的id。您需要将数据[i].id作为id传递,而不是类。并对每个对象应用相同的类。可以在函数外部创建live listner。看到我的新答案了吗!谢谢!仔细观察后,它似乎没有发挥应有的作用。它正在传递参数,但它“记住”的时间太长:单击X会转到functiontwo(id),这会给用户一个jquerypopup,其中包含消息“Deletethis user?”,以及一个submit按钮。当您单击user1旁边的X时,关闭对话框(不按submit按钮),单击user3旁边的X并单击submit,不仅user3会被删除(这是它需要做的),user1也会被删除。。。这当然不是我想要的。。。如何解决最后一个问题?谢谢!这取决于第二个函数的工作方式。问题不在于这里贴的是什么。你有没有检查你的代码,确认ID是唯一的?是的,我确定ID是唯一的。我将编辑我的第一篇文章,并将我的第二个功能也放在那里。我想你的问题是,当你点击这个框时,你没有重置对话框的内容。使用Firebug(和FF)检查脚本(delete.php)何时加载。