Как добавить Div между двумя Div на основе их идентификаторов, используя Jquery? - PullRequest
5 голосов
/ 13 мая 2011

Если у меня есть эти объекты:

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

Любая помощь приветствуется,

1020 * Тейлор *

Ответы [ 7 ]

11 голосов
/ 13 мая 2011

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/

1 голос
/ 13 мая 2011

Во-первых, идентификаторы не могут начинаться с цифры.

Игнорируя это, если вы разрешаете только целые числа, это просто, просто возьмите 1 из значения и вставьте его, а затем перенумеруйте остальные. В противном случае вам придется пройтись по DOM, чтобы сначала проверить значения других.

1 голос
/ 13 мая 2011

Что с этим не так?

  $('#3').after('<div id='3.5'>Hey</div>');
0 голосов
/ 13 мая 2011

Демо-версия

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

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

Примечание: Это будет работать только один раз между целыми числами. Более надежный метод требует просмотра идентификаторов всех элементов div в месте назначения.

0 голосов
/ 13 мая 2011

обновлен. спасибо, Нил.

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 голосов
/ 13 мая 2011

Может быть, что-то подобное сработает:

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

Но вам, вероятно, следует сначала проверить (с помощью регулярного выражения), что текст в текстовом поле является допустимым числом ...

0 голосов
/ 13 мая 2011

сравнение, которое нужно добавить, является арифметическим, поэтому, к сожалению, вам нужно перебрать элементы div, которые вы можете сделать.возможно, вам следует выполнить заполнение, например 3 = 300000, поэтому 3,5 - это 3500000, чтобы сделать лучшее сравнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...