首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JQuery div选择器有关问题 急

2012-05-05 
JQuery div选择器问题急急急急急急JScript codevar PathSet $(this).attr(p)var folderPathSize Pa

JQuery div选择器问题 急急急急急急

JScript code
                                                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。
请大家帮看看,多谢。

[解决办法]
JScript code
//这样试试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);}
[解决办法]
JScript code
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([color=#FF0000]此处需要传参或者将这个click方法写成闭包[/color])                            {                                alert(arrayPath[k]);          //输出undefined                                //$(".leftBlock").remove();       //*******  需要处理的地方                            });                            $('#track').append(" -> ");                            $('#track').append(PathLink);                        }
[解决办法]
探讨

我已经把第一个问题解决了 解决方法如下
JScript code

for(k = 0; k < arrayPath.length; k++)
{
var PathLink = $("<a>");
……



[解决办法]
你这id属性值也太不规范了。。
JScript code
//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();});
[解决办法]
探讨

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

[解决办法]
$(dom).nextAll('div').remove();
[解决办法]
探讨
没执行的原因是 var a = arrayPath[k]; 变成k为最大值的那个arrayPath[k]了

例如 arrayPath[1] = '/a'; arrayPath[2] = '/a/b'; arrayPath[3] = '/a/b/c';

执行的时候 每次点击我定义的这个PathLink链接 alert的a值 都是arrayPath[3]

[解决办法]
JS闭包传值真心难理解啊。。。用with{}语句可以解决你遇到的问题。你的代码不方便测试,另写了个小例子说明一下:
HTML code
<!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> 

热点排行