이 패턴이 너무 자주 발생합니다.
누군가가 image1 만 얻는 정식 방법을 제공 할 수 있습니까? 예 2를 보면 작동합니다.하지만 그 이유를 이해하지 못합니다. 왜 작동합니까 - - 또는이 그냥jQuery의 클로저/범위 지정 문제
$(document).ready(function() {
$("#prev, #next").click(function() {
var mainImage = $("#image1");
if (mainImage.css("visibility")=="hidden") {
$(mainImage.css("visibility","visible");
return;
}
var currentNumber = parseInt(mainImage.attr("src").split('gallery/')[1]);
var newNumber = ($(this).attr("id")=="next")?currentNumber+1:currentNumber-1;
var testImage = new Image();
testImage.onload=function() {
var img = $("#image1");
img.attr("src",this.src);
img.css("visibility","visible");
}
testImage.onerror=function() {
$("#image1").css("visibility","hidden");
}
testImage.src="gallery/"+newNumber+".jpg";
return false;
});
});
은 폐쇄를 시도하는이 특정 상황에 대한 설명이 나는
이초기 코드가 그물 :에 폐쇄 물건을 읽고, 감사합니다 범위 지정 문제?
$(document).ready(function() {
$("#prev, #next").click(function() {
var mainImage = $("#image1"); // this should be local to the click function
if (mainImage.css("visibility")=="hidden") {
$(mainImage.css("visibility","visible");
return;
}
var currentNumber = parseInt(mainImage.attr("src").split('gallery/')[1]);
var newNumber = ($(this).attr("id")=="next")?currentNumber+1:currentNumber-1;
var testImage = new Image();
testImage.onload=function() {
mainImage.attr("src",this.src); // how come mainImage is available here?
mainImage.css("visibility","visible");
}
testImage.onerror=function() {
mainImage.css("visibility","hidden");// how come mainImage is available here?
}
testImage.src="gallery/"+newNumber+".jpg";
return false;
});
});
에 정의 된 함수에 로컬로 유지됩니다. 그래서 폐쇄보다는 범위가? – mplungjan
그들은 별개의 별명 hehe가있는 동일한 광대입니다. –