2011-05-13 88 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。

相关问题