2011-09-02 74 views
0

你好,我正在尝试创建一个在线照片集。因此,这个想法是有一个图片和两个元素与onclick事件加载专辑中的下一个和前一个图像。 我为此创建了一个函数,但它只能使用一次。如果按下上一个或下一个按钮,则会执行onclick,但onclick属性不会更改,并且一个简单的警报框会告诉我该代码不会再次执行。jquery change onclick

我很抱歉在我的代码foto中的荷兰语应该是照片!

我的HTML看起来像这样。

<div id="fotolarge"> 
    <span class="arrow arrowright"></span> 
    <span class="arrow arrowleft"></span> 

    <span id="fotoloading"></span> 
    <img id="foto"/> 
</div> 

我的JavaScript看起来像这样

function loadPhoto(src){ 
    $("#fotoloading").css("z-index","3"); 
    $currentIndex = jQuery.inArray(src, $photoArray); 

//next image 
    $nextIndex = $currentIndex + 1; 
    if($nextIndex < $photoArrayLength){ 
    $(".arrowright").attr("onclick", "loadPhoto('" + $photoArray[$nextIndex] + "')"); 
    } 
    else{ 
    $(".arrowright").attr("onclick", "loadPhoto('" + $photoArray[0] + "')"); 
    } 

//previous image 
$previousIndex = $currentIndex - 1; 
if($previousIndex >= 0){ 
    $(".arrowleft").attr("onclick", "loadPhoto('" + $photoArray[$previousIndex] + "')"); 
} 
else{ 
    $(".arrowleft").attr("onclick", "loadPhoto('" + $photoArray[$photoArrayLength -1] + "')"); 
} 

var loader = new ImageLoader(src); 
loader.loadEvent = function(url, image){ 
    $("#fotoloading").css("z-index","2"); 
    $("#foto").replaceWith(image); 
    $("#foto").css("display", "block"); 
    calcmiddle(); 
} 
loader.load(); 
} 

变量$ photoArray和$ photoArrayLength是全局变量。 $ photArray包含图像来源的列表。 Imageloader不是问题,因为不工作或者是部分注释掉。

我希望有人有一个如何解决这个问题的想法。我已经尝试过这样的jquery.click()

$(".arrowright").click(function(){ 
    loadPhoto($photoArray[0]); 
}); 

然后它的工作部分。它在执行loadPhoto()的无限循环中创建。

+0

对于它的价值,已经有很好的插件可以为你做这项工作。对于幻灯片:http://jquery.malsup.com/cycle/对于轮播:http://www.gmarwaha.com/jquery/jcarousellite/ – Blazemonger

+0

你确定$ currentIndex设置为某些东西? – Kreker

+0

你可以给我完整的代码与$ photoArray,$ photoArrayLength和ImageLoader,以便我可以做一个完整的工作示例? – Usman

回答

0

您最好使用click事件来告诉您要走向哪个方向(1或-1)并跟踪当前位置,而不是每次都重写点击事件。

+0

这是一个好主意,我会尝试。 但是你知道为什么当前的代码工作吗? – Ruben