2012-02-13 100 views
0

好吧我真的不知道我在做什麼錯在這裏,但div沒有創建,我不知道爲什麼?jquery draggable當停止創建div

$('#tree_01').draggable({appendTo: 'body', helper: 'clone', stop: function(event, ui) { 
       var bg_pos_x = -5; 
       var bg_pos_y = -1516; 
       var width = 148; 
       var height = 174; 
       var pos_x = $(ui.helper).position().left; 
       var pos_y = $(ui.helper).position().top; 
       var id = 'tree_'+pos_x+'_'+pos_y; 
       folliage(id,bg_pos_x,bg_pos_y,width,height,pos_x,pos_y); 
      }}); 

當拖動元素被丟棄它應該運行的代碼,並轉到以下功能:

function folliage(id,bg_pos_x,bg_pos_y,width,height,pos_x,pos_y){ 
    var newdiv = document.createElement('div'); 
    newdiv.setAttribute('id', id); 
    document.getElementById(id).style.left=pos_x+'px'; 
    document.getElementById(id).style.zIndex='5'; 
    document.getElementById(id).style.left=pos_y+'px'; 
    document.getElementById(id).style.width=width+'px'; 
    document.getElementById(id).style.height=height+'px'; 
    document.getElementById(id).style.background='url(../img/village.png)'; 
    document.getElementById(id).style.backgroundPosition=bg_pos_x+'px '+bg_pos_y+'px'; 

} 

但股利還沒有生成????

回答

1

你從來沒有真正將div添加到頁面。您需要使用類似append的東西來將div添加到DOM。

+0

謝謝,這樣一個愚蠢的錯誤,我沒有意識到,我花了過去2個小時試圖弄清楚思考瀏覽器與我的心靈搞砸:P。謝謝 – 2012-02-13 18:38:28

1

<div>元素確實生成,但你從來沒有將它添加到DOM樹,所以它永遠不會在頁面上可見。

您可以將新的元素,比方說,頁面正文:

document.body.appendChild(newdiv); 

順便說一句,你folliage()功能會更短,可能更具可讀性是你到你的jQuery的使用擴大到其代碼。

還要注意的是,線:

document.getElementById(id).style.left=pos_y+'px'; 

或許應改爲:

document.getElementById(id).style.top = pos_y + 'px'; 
+0

做空間有所作爲?我不是一個專家,只是有興趣:) – 2012-02-13 18:46:48

+0

除了提高可讀性恕我直言,沒有區別:) – 2012-02-13 18:52:24

+0

大聲笑,這是真的,但:)我應該習慣於把空間放在:)謝謝 – 2012-02-13 18:56:00

1

如果你使用jQuery,你應該使用,而不是document.createElement jQuery的元素創建方法。但看起來你的問題是你沒有將新創建的元素添加到文檔中。嘗試使用jQuery('<div id=' + id + '/>').appendTo('body');或類似的東西。