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文件,並設置元素:
- HTML(僅此4 LI)
- LOAD CSS爲HTML
- 加載JS到html
這個程序的工作原理,但是當我設置順序此元素:
- 加載CSS的HTML
- 個加載JS到html
- HTML(這4 LI)
這一計劃doeasn't工作。我不能動這個李。事實上,JS的工作原理是讓我看到警報,但我仍然無法移動此李。 我不能讓我們頭,身體等,因爲它不工作。 我該怎麼做才能修復這個bug?
這就像加載HTML動態。你必須使用jQuery的.on()函數,像這裏https://stackoverflow.com/questions/13107715/binding-jquery-to-dynamically-loaded-content – Gerard
首先你應該小心地加載js代碼之前關閉body標籤,然後你應該將所有js代碼包裝在$(document).ready()函數 –
中,當你像這樣使用DOM時,在javascript或jQuery中,html元素必須存在於瀏覽器中,如果這個js代碼放置在之前,html元素尚未被解析,並且選擇失敗。你必須把它放在(通常在元素之後或者在body的最後),或者用你的代碼在這裏引起奇怪的顯示方式使用'$(document).ready'(Firefox) – Kaddath