2011-05-13 86 views
5

如果我有這些對象:如何在兩個div之間根據ID使用Jquery添加Div?

<div id='1'></div> 
<div id='2'></div> 
<div id='3'></div> 
<div id='4'></div> 
<div id='5'></div> 

我有一個文本框:

<input type="text"> 

當我鍵入值:3.5動態讓(我有這個代碼,接下來的部分我需要)幫助:

<div id='3.5'></div> 

我怎麼能把它下面的順序,沒有檢查,看看每個頁面上的div的價值?

<div id='1'></div> 
<div id='2'></div> 
<div id='3'></div> 
<div id='3.5'></div> 
<div id='4'></div> 
<div id='5'></div> 

使用:

$('#What Goes Here If I Dont know the elements on the page?').after('<div id='3.5'>Hey</div>'); 

任何幫助表示讚賞,

泰勒

+0

我不認爲它是有效的CSS有以數字開頭的ID或類。 – drudge 2011-05-13 18:17:16

+0

爲什麼你需要排序的ID:s?或者你爲什麼需要ID:s?如果你有一個包含id(或類)的div,你可以按順序訪問它的子元素。 – 2011-05-13 18:21:43

+0

是的,我很抱歉在我的例子中的ID是一個數字,我只寫了這個例子 – TaylorMac 2011-05-13 18:25:16

回答

11

的ID在DOM應該開始與一些(他們不會是有效的) 。
他們應該從字符A-Za-z開始,然後他們可以有數字-_以下。

,但如果你想要去的路線試試這個:

var div = $("<div id='3.5'></div>"); 
div_id_after = Math.floor(parseFloat(div.get(0).id)); 

$('#'+div_id_after).after(div); 

這裏是一個小提琴演示:http://jsfiddle.net/maniator/DPMV5/

+0

我知道我很抱歉,因爲這個例子的目的,我想簡化它,當然我會考慮到編號 – TaylorMac 2011-05-13 18:19:58

+0

@TaylorMac的規則,請參閱我的更新,現在製作小提琴(目前jsfiddle尚未加載) – Neal 2011-05-13 18:20:18

+0

太棒了。這將是偉大的,我從來沒有見過使用parseFloat – TaylorMac 2011-05-13 18:22:38

1

有什麼不對呢?

$('#3').after('<div id='3.5'>Hey</div>'); 
+0

他想動態地找到他應該插入的div。 – villecoder 2011-05-13 18:18:45

+0

@villecoder,看到我的更新 – Neal 2011-05-13 18:19:40

+0

@Neal,我做到了。相當有創意的解決方案:) – villecoder 2011-05-13 18:21:08

1

首先ID不允許以數字開頭。

忽略這一點,如果你只允許整數,很容易,只需從值中取1並插入它,然後重新編號。否則,你將不得不走DOM來檢查其他人的值。

0

比較添加是算術,所以不幸你需要遍歷divs你可以做到這一點。也許你應該做填充,如3 = 300000,所以3.5是3500000,做一個最好的比較。

0

也許類似的東西會工作:

var text = yourTextBox.value; 
if(var number = Number(text)) 
{ 
    $('#'+Math.floor(number)).after('<div id='+text+'>Hey</div>'); 
} 
else alert("wrong number"); 

但你可能應該先檢查(使用正則表達式)的文本中的文本是一個合法的數...

0

更新。謝謝尼爾。

http://jsfiddle.net/FB8xG/3/

var newValue = 3.5; 

var oldValue = Math.floor(newValue); //3 

var oldValueID = ('#' + oldValue); 
var newValueID = ('<div id="' + newValue + '">' + newValue + '</div>'); 

$(oldValueID).after(newValueID); 
+0

你可以做:' var oldValue = Math.floor(newValue); // 3' – Neal 2011-05-13 18:33:24

0

Live Demo

var input = "3.5"; 
var parent = Math.floor(input); 
var dest = $('#div-'+parent); 

dest.after(dest.clone().attr('id','div-'+input).text(input)); 

注:這隻會整數之間的合作一次。更強大的方法需要查看目標中所有div的ID。

相關問題