如果我有这些物品:
<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 :(得分: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。
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。