繁体   English   中英

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

[英]How to Append a Div in-between two Divs based on their ID's using Jquery?

如果我有这些对象:

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

任何帮助表示赞赏,

泰勒

在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/

这有什么问题?

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

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

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

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

也许这样的东西会起作用:

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

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

更新。 谢谢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);

现场演示

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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM