2012-05-02 2 views
1

Как изменить html тега body с помощью jquery.Сменить тело html с помощью jQuery

Я это тело тега <body> Когда я нажимаю на кнопку, тело должно измениться на
<body ontouchmove="BlockMove(event);>

Как я могу сделать это с jquery и javascript?

+1

Вы действительно хотите изменить HTML-код или хотите связать обработчик событий? –

ответ

5
$('#buttonId').click(function(){ 
    $('body').attr('ontouchmove', "BlockMove(event)") 
}) 

Или еще лучше, не изменить структуру DOM, просто привязать обратный вызов к событию:

$('#buttonId').click(function(){ 
    $('body').bind('touchmove', BlockMove); 
}); 
+0

+1 Я просто набрал версию обработчика событий, вы избили меня до него :) –

+1

Вы не хотите, чтобы «в» в аргументе 'bind':' .bind ('touchmove' BockMove (event)); ' –

+0

@JamesAllardice. правда. исправлено. Благодарю. Мне стыдно. – gdoron

0

попробовать это (непроверенный код):

$(body).attr("ontouchmove","blockMove(event)"); 
0

I подумайте, что вы можете привязать событие к телу при нажатии кнопки:

$('button').click(function(){ 
    $("body").bind('touchmove', BlockMove); 
}); 
+0

[этот комментарий] (http://stackoverflow.com/questions/10411831/change-body-html-with-jquery/10411877#comment13432428_10411877) верен и здесь – gdoron

+1

, и там есть бесполезное закрытие ... – Alnitak

+0

** Первый комментарий по-прежнему верен ... ** '$ (" body "). Bind ('ontouchmove', BlockMove);' => '$ (" body "). Bind ('touchmove', BlockMove); ' – gdoron

2

Там нет необходимости изменять реальный атрибут - просто добавьте ссылку на функцию непосредственно на тело тега:

$('#button').click(function() { 
    document.body.ontouchmove = BlockMove; 
}); 

или способ JQuery:

$('#button').on('click', function() { 
    $('body').on('touchmove', BlockMove); 
}); 

Обратите внимание, что в последнем случае вы нужно использовать ev.originalEvent для доступа к исходному объекту события, а не к нормализованному событию jQuery, которое не знает о свойствах касания.

В версии JQuery вы также должны убедиться, что это не произойдет больше, чем когда-то, в противном случае BlockMove получит добавил к обработке цепи снова и снова для каждого нажатия кнопки события. В версии DOM0 это не имеет значения, потому что этот перезаписывает обработчик события.

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