我有一个for循环,里面有一个var命名路径,我在一个函数中使用这个var,我作为另一个函数的参数传递,它看起来像这样:
for( ... ){
var path = ...;
$("<button>").html(path).click(function(){ ...want to use path here... }).appendTo(...);
}
问题是在for循环的每个新回合都覆盖了路径,我的全部函数看起来像这样:
this.goTo = function(path){
that.path = path;
that.files = [];
that.selectedFiles = [];
//Display path
that.pathDiv.empty();
var dirs = that.path.split("/");
if(dirs.length > 1 && dirs[dirs.length-1].length == 0){
dirs.splice(dirs.length-1, 1);
}
for(var d in dirs){
var path = "/";
for(var i=0;i<d;i++){
if(dirs[i].length > 0){
path += dirs[i] + "/";
}
}
var name = "/";
if(dirs[d].length > 0){
path += dirs[d] + "/";
name = dirs[d];
}
that.pathDiv.append($("<button>").html(name).click(function(){ console.log(path); that.goTo(path); }));
}
that.directoryContent.empty();
serverUI.emit("getDirectoryContent", {path: that.path});
}
我不能在我的html标签中使用onClick属性,因为我需要访问触发函数的对象(那),任何想法?
答案 0 :(得分:2)
您可以将路径作为属性附加到元素本身上,就像这样。
for( ... ){
var path = ...;
$("<button>").attr("path",path).html(path).click(function(){
$(this).attr("path") // use it like this.
...want to use path here... }).appendTo(...);
}