Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   getElementById - помогите разобраться (https://javascript.ru/forum/misc/40819-getelementbyid-pomogite-razobratsya.html)

webinsoul 21.08.2013 03:00

getElementById - помогите разобраться
 
Код:

<script type="text/javascript">
$(document).ready(function(){
$(function() {
$("div.tile").click(function(){ 
var id = $(this).attr("id"); 
var start = 1;
$.ajax		({
url: "http://site.com.ua/js/js3.php",
type: "GET",
data: {"id": id, "start": start},
cache: true,
success: function(response)
{
var myArray  = response.split('abra_kadabra')
if (myArray[0] == 1)
	{
$(document.getElementById(id)).html(myArray[1]);
	}
else 
	{
alert('это все');	
	}
}
      		 });	
    });
});
});
</script>



$(document.getElementById(id)).html(myArray[1]); - меняет содержание тега, но тег оставляет, как его убрать?

danik.js 21.08.2013 05:01

зачем getElementById? Оптимизация типа ? )))
$('#' + id).remove()

ruslan_mart 21.08.2013 05:07

Думаю, как-то так:
$(function() {
	$("div.tile").click(function() { 
	
		$.get('http://inwatch.com.ua/js/js3.php', {id: this.id, start: 1}, function(data) {
			
			data = data.split('abra_kadabra');
			
			if(data[0] == 1) $('#'+this.id).prev().after(data[1]).next().remove();
			else alert('Это всё');
			
		});
	});
});


Не проверял, но должно работать.

рони 21.08.2013 06:47

Цитата:

Сообщение от webinsoul
$(document.getElementById(id)).html(myArray[1]); - меняет содержание тега, но тег оставляет, как его убрать?

Цитата:

.replaceWith()
.replaceAll() Заменяет одни элементы страницы на другие (новые или уже существующие).
:write:

moskitos80 21.08.2013 11:31

...
if (myArray[0] == 1) {
	var oldNode = getElementById(id);
	oldNode.parentNode.replaceChild(myArray[1], oldNode);
} ...

:)

webinsoul 21.08.2013 13:13

Спасибо за ответы.
Цитата:

Сообщение от danik.js (Сообщение 268508)
зачем getElementById? Оптимизация типа ? )))
$('#' + id).remove()

Попробовал - не работает. Может неверно впихнул в код :(
Цитата:

Сообщение от Ruslan_xDD (Сообщение 268509)
Думаю, как-то так:
...
Не проверял, но должно работать.

Не срабатывает :(
Цитата:

Сообщение от moskitos80 (Сообщение 268537)
...
if (myArray[0] == 1) {
	var oldNode = getElementById(id);
	oldNode.parentNode.replaceChild(myArray[1], oldNode);
} ...

:)

Не срабатывает :(


.replaceWith() - меняет полностью, но задача в следующем:
нужно, чтоб при нажатии на старый ДИВ, он менялся на див из js/js3.php уже со своим id и при повторном нажатии снова выполнялся js3.php с новыми id.

Подскажите, как это правильно реализовать.

ruslan_mart 21.08.2013 13:24

$(function() {
	$("div.tile").click(function() { 
	
		$.get('http://inwatch.com.ua/js/js3.php', {id: this.id, start: 1}, function(data) {
			
			data = data.split('abra_kadabra');
			
			if(data[0] == 1) $('#'+this.id).html(data[1]).prop('id', 'new_ID');
			else alert('Это всё');
			
		});
	});
});


А где Вы новый ID получаете?

danik.js 21.08.2013 13:41

Вот что-то вроде этого. Смысл думаю понятен:
$(function() {
    var handler = function() {
        var target = $(this);
        $.get('http://inwatch.com.ua/js/js3.php', {id: this.id, start: 1}, function(data) {
            data = data.split('abra_kadabra');
            var el = $(data[1]);
            target.replaceWith(el);
            el.click(handler);
        });
    };
    $("div.tile").click(handler);
});

webinsoul 21.08.2013 13:49

Цитата:

Сообщение от Ruslan_xDD (Сообщение 268555)
А где Вы новый ID получаете?

Новый Id с js/js.php

webinsoul 21.08.2013 13:51

Цитата:

Сообщение от danik.js (Сообщение 268559)
Вот что-то вроде этого. Смысл думаю понятен:
$(function() {
    var handler = function() {
        var target = $(this);
        $.get('http://site.com.ua/js/js3.php', {id: this.id, start: 1}, function(data) {
            data = data.split('abra_kadabra');
            var el = $(data[1]);
            target.replaceWith(el);
            el.click(handler);
        });
    };
    $("div.tile").click(handler);
});

Бомба!!! Спасибо :dance:


Часовой пояс GMT +3, время: 23:01.