2017-05-30 53 views
0

我設計了一個程序。有了它,我可以在我的頁面上移動li標籤。jQuery的工作時,李是在頂部,而不是當它在底部

代碼:

var click = 0; 
 
var pos_x = 0; 
 
var pos_y = 0; 
 
var a = 0; 
 
var out = [0, 0, 0, 0]; 
 

 
$(".movenode").mousedown(function() { 
 
\t \t \t \t a = $(this).attr("id"); 
 
     var b = $(this).position(); 
 
     if(click == 0) 
 
     { 
 
     \t  pos_x = b.left; 
 
      pox_y = b.top; 
 
     } 
 
     click = 1; 
 
     
 
     $(document).mousemove(function(e) { 
 
     if(click==1) { 
 
      $("#"+a).css({left:e.pageX-b.left-40, top:e.pageY-b.top-10}); 
 
     } 
 
    }); 
 
    
 
}); 
 

 
$(document).mouseup(function(e) { 
 
    $("#"+a).css({left:pos_x, top:pos_y}); 
 
    var d = 1; 
 
    while(d < 5) { 
 
     var pos = $("#"+d).position(); 
 
     if(e.pageY > pos.top && e.pageY < pos.top + $("#"+d).height() && e.pageX > pos.left && e.pageX < pos.left + $("#"+d).width()) { 
 
    \t  alert($("#"+d).attr("id")); 
 
     } 
 
     d++; 
 
    } 
 

 
    click = 0; 
 
});
.movenode { 
 
    position:relative; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<li class="movenode" id="1"/>1234 
 
<li class="movenode" id="2"/>sadsdsadsad 
 
<li class="movenode" id="3"/>sadsdsadsad 
 
<li class="movenode" id="4"/>sadsdsadsad

此代碼的工作。但我有一個小問題。當我在此爲了這個代碼添加到我的HTML文件,並設置元素:

  1. HTML(僅此4 LI)
  2. LOAD CSS爲HTML
  3. 加載JS到html

這個程序的工作原理,但是當我設置順序此元素:

  1. 加載CSS的HTML
  2. 個加載JS到html
  3. HTML(這4 LI)

這一計劃doeasn't工作。我不能動這個李。事實上,JS的工作原理是讓我看到警報,但我仍然無法移動此李。 我不能讓我們頭,身體等,因爲它不工作。 我該怎麼做才能修復這個bug?

+0

這就像加載HTML動態。你必須使用jQuery的.on()函數,像這裏https://stackoverflow.com/questions/13107715/binding-jquery-to-dynamically-loaded-content – Gerard

+0

首先你應該小心地加載js代碼之前關閉body標籤,然後你應該將所有js代碼包裝在$(document).ready()函數 –

+0

中,當你像這樣使用DOM時,在javascript或jQuery中,html元素必須存在於瀏覽器中,如果這個js代碼放置在之前,html元素尚未被解析,並且選擇失敗。你必須把它放在(通常在元素之後或者在body的最後),或者用你的代碼在這裏引起奇怪的顯示方式使用'$(document).ready'(Firefox) – Kaddath

回答

1

嘗試添加$(document).ready(function(){ //code });

var click = 0; 
 
var pos_x = 0; 
 
var pos_y = 0; 
 
var a = 0; 
 
var out = [0, 0, 0, 0]; 
 
$(document).ready(function(){ 
 
$(".movenode").mousedown(function() { 
 
\t \t \t \t a = $(this).attr("id"); 
 
     var b = $(this).position(); 
 
     if(click == 0) 
 
     { 
 
     \t \t pos_x = b.left; 
 
     \t \t pox_y = b.top; 
 
     } 
 
     click = 1; 
 
     
 
     $(document).mousemove(function(e) 
 
     { 
 
      if(click==1) 
 
      { 
 
      $("#"+a).css({left:e.pageX-b.left-40, top:e.pageY-b.top-10}); 
 
      } 
 
    \t }); 
 
    
 
}); 
 

 
$(document).mouseup(function(e) { 
 
    $("#"+a).css({left:pos_x, top:pos_y}); 
 
\t var d = 1; 
 
while(d < 5) 
 
{ 
 
    \t var pos = $("#"+d).position(); 
 

 
\t \t if(e.pageY > pos.top && e.pageY < pos.top + $("#"+d).height() && e.pageX > pos.left && e.pageX < pos.left + $("#"+d).width()) 
 
    { 
 
    \t \t \t \t alert($("#"+d).attr("id")); 
 
    } 
 
    d++; 
 
} 
 

 
\t \t \t 
 
    \t click = 0; 
 
}); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<li class="movenode" id="1"/>1234 
 
<li class="movenode" id="2"/>sadsdsadsad 
 
<li class="movenode" id="3"/>sadsdsadsad 
 
<li class="movenode" id="4"/>sadsdsadsad

+0

謝謝,我不知道我什麼時候忘了它。現在一切正常,謝謝:) – Warmix

相關問題