Как установить внутренний HTML элемента span с помощью jQuery

Следующее дает мне ошибку Uncaught SyntaxError: Неожиданный идентификатор:

$('span.xtro').html('');
$('span.xtro').html('<input type='button' class='newbutton send' value='Send request' onclick= 
                      "javascript:request('send','1','2');'>');

Как это исправить?


person Beraki    schedule 08.04.2012    source источник
comment
Посмотрите на подсветку синтаксиса, и вы сможете увидеть проблему...   -  person Rob W    schedule 08.04.2012


Ответы (2)


Это не лучший способ использования jQuery... атрибуты onclick не рекомендуются. вот альтернатива

//note wrapping with double quotes and using single ones inside 
var $el = $( "<input type='button' class='newbutton send' value='Send request'>" );
$el.on( 'click', function(){ request('send','1','2'); } ); 
$('span.xtro').html('').append( $el );

EDIT изменил $el.bind на $el.on, который используется в настоящее время.

person gotofritz    schedule 08.04.2012
comment
Это более чистое решение. Кавычки внутри кавычек внутри кавычек, до такой степени, что вам нужно их избегать, через некоторое время могут стать довольно сложными. +1 - person jmort253; 10.04.2012

Вы не избегаете одинарных кавычек:

$('span.xtro').html('<input type="button" class="newbutton send" value="Send request"'
                  + ' onclick="request(\'send\',\'1\',\'2\');">');

Вы также можете избавиться от первого $('span.xtro').html('');, он вам не нужен.

person BenOfTheNorth    schedule 08.04.2012
comment
+1 Хотя я бы порекомендовал ему/ей создать элемент и вместо этого прикрепить его. - person Gary; 08.04.2012
comment
+1 Но почему бы не открывать и не закрывать двойными кавычками и не оставлять исходные одинарные кавычки? - person Sam; 08.04.2012
comment
Ему решать, каким образом он это сделает, но я просто подумал, что подчеркну проблему :) - person BenOfTheNorth; 08.04.2012
comment
Спасибо @Rob W, никогда не замечал, что + не хватает! - person BenOfTheNorth; 08.04.2012
comment
@BenGriffiths А также цитата атрибута onclick (он был запущен с ", но закрыт с \'. Кроме того, javascript: не нужен в обработчике onclick. - person Rob W; 08.04.2012
comment
Хэнкс много братан @BenGriffiths ты лучший - person Beraki; 08.04.2012
comment
Ха-ха, я забыл половину основ после столь долгого использования jQuery - person BenOfTheNorth; 08.04.2012
comment
@Rob W: 20 долларов говорит, что, поскольку на его вопрос получен ответ, он больше никогда не увидит эту страницу. - person Gary; 08.04.2012
comment
@ jmort253 - Мой ответ был на комментарий с просьбой к ОП принять ответ. - person Gary; 10.04.2012