2014-02-18 22 views
0

我正在創建一些div併爲for循環中的div分配點擊監聽器 代碼是這樣的。分配點擊監聽器時沒有得到正確的位置

function selectedPhotosDiv(path){ 

try{ 

    var choiceDiv = document.createElement('div'); 
     choiceDiv.id = "photos"+Buttler.User.chatid; 
     choiceDiv.className = "display_photos"; 
    for(var i=0;i<path.length;i++) 
    { 
     var box = document.createElement('div'); 
     box.className = "img_box"; 
     box.id = "box"+i; 
     box.style.backgroundImage="url('file://"+path[i]+"')"; 
     var close = document.createElement('div'); 
     close.className = "img_close"; 
     $(close).click(function(){ 
      console.info(i); 
     }); 
     box.appendChild(close); 
     choiceDiv.appendChild(box); 
    } 
    return choiceDiv; 
}catch(error){ 
} 

} 

然而,點擊關閉後,i的值始終是i的最後一個值,即path.length-1; 我無法弄清楚我犯的錯誤。 需要幫助

回答

1

使用jQuery我已經做了這個樣子。見http://jsfiddle.net/4ZW8A/1/

function selectedPhotosDiv(path){ 

    var $box; 
    var $choiceDiv = $('<div id="photos'+ Buttler.User.chatid + '" class="display_photos" >'); 
    for(var i=0;i<path.length;i++) 
    { 
     $box = $('<div id="box' + i + '" class="img_box" >\ 
        <div class="img_close">\ 
       </div>'); 
     $box.css('background-image', "url('file://"+path[i]+"')"); 
     $box.find('.img_close').click(function(){ 
      var index = $(this).parent('.img_box').attr('id').replace('box', ''); 
      console.log(index); 
     }); 

     $choiceDiv.append($box); 
    } 
    return $choiceDiv; 
} 

不能使用i,因爲它的價值可能當你點擊了關閉已經被遞增。

+0

不工作的哥們:( – Bora

+1

見我的編輯和提琴 – krampstudio

+0

工作夥伴。非常感謝你能請給我提供一些鏈接瞭解關閉並且實際存在的問題是什麼? – Bora

0

嘗試用:

$(document).on('click', close, function(){ 
      console.info(i); 
     }); 

或者你可以檢查這個話題:HERE

0

您的問題用JavaScript關閉做。 i變量將始終是迭代的最後一個值。

更改你的代碼到這個

$(close).click(function(){ 
    console.info($(this).parrent().attr("id")); 
}); 

螞蟻它應該工作

+0

這裏,這將指向框格(如上面的代碼片段說明)不關閉 – Bora