2011-12-24 5 views
2

Я работаю с jquery некоторое время, так что это довольно неловко, что у меня проблемы с этим. Я создал новый элемент, но я не могу выбрать его с помощью jquery, что я могу сделать по этому поводу? Это я Javascript используется для создания элементаНевозможно выбрать новый созданный объект с jquery

$('<div id="test">blah</div>').insertAfter('#ref'); 

HTML, является

<html> 
<head> 
</head> 
<body> 
<div id="ref"></div> 
</body> 
</html> 

я тогда попробовал этот

$('#test').click(function(){ 
    $(this).remove(); 
}); 

, но это не работает ... Мне нужна помощь здесь

+0

Установите FireBug в свой браузер и перейдите на вкладку «Консоль», чтобы узнать, что случилось. – MahanGM

ответ

2
$('#test').live('click', function(){ 
    $(this).remove(); 
    }); 
+0

+1 для живого метода! =) – gideon

+0

'.live()' только помогает, если обработчик связан перед добавлением элемента. В этом случае он сначала добавляет элемент, поэтому '.click' должно быть в порядке. – Interrobang

+2

"live()" устарел. Вместо этого используйте «on()». см. http://api.jquery.com/on/ –

4

Вот JSFidd le, показывающий, что ваш код работает: http://jsfiddle.net/YqEMa/

Скорее всего, вы не разместили свой Javascript внутри обработчика jQuery «ready». Оберните Javascript так:

$(function() { 
    $('<div id="test">blah</div>').insertAfter('#ref'); 
    $('#test').click(function() { 
     $(this).remove(); 
    }); 
}); 

Это будет гарантировать, что DOM загружен перед запуском ваш Javascript.

Кроме того, конечно, вы должны убедиться, что ваш скрипт находится в пределах <script> тегов.

2

Если вы хотите только элемент вы только что вставил, чтобы быть нажаты (а не все #test элементов всякого раза, когда они существуют в жизненном цикле страницы), вы можете связать событие вновь созданный элемент:

$('<div id="test">blah</div>') 
    .click(function(){ 
     $(this).remove(); 
    }) 
    .insertAfter('#ref'); 
+0

В любом случае вы не должны создавать несколько элементов с одинаковым идентификатором. См. Http://stackoverflow.com/questions/4789859/access-multiple-elements-of-same-id-in-jquery –

+1

@ MerlynMorgan-Graham Тот же идентификатор, я думаю, вы имеете в виду - и вы правы. Пока вы удаляете предыдущий элемент с этим идентификатором, прежде чем вставлять новый, в этом нет ничего плохого. И этот метод, вероятно, означает, что вы можете потерять ID в любом случае. – lonesomeday

Смежные вопросы