var PathSet = $(this).attr('p');
                        var folderPathSize = PathSet.substring(1, PathSet.length).split('/');
                        var folderPath = PathSet;
                        var arrayPath = new Array();
                        var num = 0;
                        if(folderPathSize.length > 1)
                        {
                            for(j = 0; j < folderPathSize.length; j++)
                            {
                                if(j != folderPathSize.length - 1)
                                {
                                    folderPath = folderPath.substring(0, folderPath.lastIndexOf('/'));
                                    arrayPath[num] = folderPath;
                                    num = num + 1;
                                }
                            }
                            arrayPath.reverse();
                        }
                        arrayPath[num] = PathSet;
                        for(k = 0; k < arrayPath.length; k++)
                        {
                            alert(arrayPath[k]);             //正常输出
                            var PathLink = $("<a>");
                            PathLink.append(arrayPath[k].substring(arrayPath[k].lastIndexOf('/') + 1));
                            PathLink.bind('click',  function()
                            {
                                alert(arrayPath[k]);          //输出undefined
                                //$(".leftBlock").remove();       //*******  需要处理的地方
                            });
                            $('#track').append(" -> ");
                            $('#track').append(PathLink);
                        }
                    });Question1 : 为什么第2个alert输出undedined      怎么能正常输出
Question2 : //$(".leftBlock").remove();    这行代码   我想要的效果是  remove 所有在 class=leftBlock且id=arrayPath[k] 之后的DIV。
请大家帮看看,多谢。

解决方案 »

  1.   

    这个要贴全就太多代码了    这些是主要的    第一行var PathSet = $(this).attr('p');  就是一个div  里面有个p属性   这些都是正常的      假设PathSet = /a/b/c就行了    说简单点  就是一个文件夹的路径。
      

  2.   

    //这样试试for (k = 0; k < arrayPath.length; k++) {
        alert(arrayPath[k]); //正常输出
        var PathLink = $("<a>");
        PathLink.append(arrayPath[k].substring(arrayPath[k].lastIndexOf('/') + 1));

    PathLink.tmp = arrayPath[k]; //定义个属性,值设为array[k]
        PathLink.bind('click', function() {
            alert(this.tmp);
        });
        $('#track').append(" -> ");
        $('#track').append(PathLink);
    }
      

  3.   


    for(k = 0; k < arrayPath.length; k++)
                            {
                                alert(arrayPath[k]);             //正常输出
                                var PathLink = $("<a>");
                                PathLink.append(arrayPath[k].substring(arrayPath[k].lastIndexOf('/') + 1));
                                PathLink.bind('click',  function(此处需要传参或者将这个click方法写成闭包)
                                {
                                    alert(arrayPath[k]);          //输出undefined
                                    //$(".leftBlock").remove();       //*******  需要处理的地方
                                });
                                $('#track').append(" -> ");
                                $('#track').append(PathLink);
                            }
    第二个
    $("#arr + div[class = 'leftBlock']").remove();
      

  4.   

    我已经把第一个问题解决了    解决方法如下                        for(k = 0; k < arrayPath.length; k++)
                            {
                                var PathLink = $("<a>");
                                var a = '\'#' + arrayPath[k] + '\'';
                                PathLink.append(arrayPath[k].substring(arrayPath[k].lastIndexOf('/') + 1));
                                PathLink.bind('click',  function()
                                {
                                    $(a).remove();
                                });
                                $('#track').append(" -> ");
                                $('#track').append(PathLink);
                            }
    但是$(a).remove();     这行报错了    错误是Uncaught Syntax error, unrecognized expression: '#/123/678'
    a的值是 ‘#/123/678'
    其实这个div的id  是/123/678现在的问题是  我想取这个div    用JQuery怎么来写          谢谢大家
    回复4楼   #arr   这个arr代表什么  我没明白
      

  5.   

    可是arr是一个变量啊  不能直接这样写吧
      

  6.   

    你这id属性值也太不规范了。。
    //var a = '\'#' + arrayPath[k] + '\'';
    var a = '#' + arrayPath[k];//如果上面的方法不行的话,先用js获取这个元素对象再转为jQuery对象试试
    var a = '#' + arrayPath[k];
    PathLink.bind('click',  function() {
        var obj = document.getElementById(a.substring(1));
        $(obj).remove();
    });
      

  7.   


    //如果上面的方法不行的话,先用js获取这个元素对象再转为jQuery对象试试
    var a = '#' + arrayPath[k];
    PathLink.bind('click',  function() {
        var obj = document.getElementById(a.substring(1));
        $(obj).remove();
    });
    这样写 起到作用了   但是只执行了一次  这段代码  是在一个循环里的  第2次以后就不执行了不知道是什么原因另外   我想要的效果是 remove 所有在id=arrayPath[k] 之后的DIV
      

  8.   

    我改完的代码是这个样子                        for(k = 0; k < arrayPath.length; k++)
                            {
                                var PathLink = $("<a>");
                                var a = arrayPath[k];
                                PathLink.append(arrayPath[k].substring(arrayPath[k].lastIndexOf('/') + 1));
                                PathLink.bind('click',  function()
                                {
                                    var obj = document.getElementById(a);
                                    $(obj).nextAll('div').remove();        //这行代码没有执行成功。
                                });
                                $('#track').append(" -> ");
                                $('#track').append(PathLink);
                            }
      

  9.   

    没执行的原因是 var a = arrayPath[k];    变成k为最大值的那个arrayPath[k]了例如  arrayPath[1] = '/a';    arrayPath[2] = '/a/b';    arrayPath[3] = '/a/b/c';执行的时候   每次点击我定义的这个PathLink链接   alert的a值  都是arrayPath[3]
      

  10.   

    JS闭包传值真心难理解啊用with{}语句可以解决你遇到的问题。你的代码不方便测试,另写了个小例子说明一下:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
    <script type="text/javascript">
    $(document).ready( function() {
    var obj = document.getElementsByTagName('span');
    for (var k = 0; k < obj.length; k ++) {
    with({k:k}) {
    $(obj[k]).bind('click', function() {
    alert(k);
    });
    }
    }
    });
    </script>
    </head><body>
    <span>111</span><span>222</span><span>333</span>
    </body>
    </html>