如何根据ID使用Jquery在两个Div之间添加Div?

时间:2011-05-13 18:15:15

标签: jquery jquery-selectors javascript

如果我有这些物品:

<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>');

感谢任何帮助,

泰勒

7 个答案:

答案 0 :(得分:11)

DOM中的ID应以数字开头(它们无效) 它们应以字符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/

答案 1 :(得分:1)

这有什么问题?

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

答案 2 :(得分:1)

首先,ID不允许以数字开头。

忽略这一点,如果你只允许整数,那很简单,只需从值中取1并插入,然后重新编号。否则,你必须先走DOM来检查其他人的值。

答案 3 :(得分:0)

添加的比较是算术,所以不幸的是你需要迭代你可以做到的div。也许你应该做填充,比如3 = 300000,所以3.5就是3500000,做一个最好的比较。

答案 4 :(得分:0)

也许这样的事情会起作用:

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

但你应该首先检查(使用正则表达式)文本框中的文本是合法的数字......

答案 5 :(得分:0)

更新。谢谢Neal。

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);

答案 6 :(得分: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。