2013-11-24 6 views
2

Я пытаюсь сделать это, когда вы нажимаете на изображение, загруженное с помощью jQuery, оно вызывает что-то, я решил использовать событие onclick с помощью html для запуска сценария jQuery, но, похоже, быть ошибкой.Событие jQuery внутри кода jQuery

Ошибка:

Unexpected token "/" 

Код:

$("<img>").attr("src", item.preview.medium).attr("style", "margin-right:1%;margin-top:1%;").attr("onclick", 
    "$('#placeholder').html('<object type="application/x-shockwave-flash" 
    style="float:left;margin-left:1%;margin-bottom:1%;" height="378" width="620" 
    id="live_embed_player_flash" 
    data="http://www.twitch.tv/widgets/live_embed_player.swf?channel=' + item.channel.display_name + '&auto_play=false" 
    bgcolor="#000000"> 
     <param name="allowFullScreen" value="true" /> 
     <param name="allowScriptAccess" value="always" /> 
     <param name="allowNetworking" value="all" /> 
     <param name="movie" value="http://www.twitch.tv/widgets/live_embed_player.swf" /> 
     <param name="flashvars" value="hostname=www.twitch.tv&channel=' + item.channel.display_name + '&auto_play=false&start_volume=25" /> 
    </object>')").appendTo("#content"); 

Новый код:

<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script type="text/javascript"> 
$.getJSON("https://api.twitch.tv/kraken/search/streams?q=path%20of%20exile&callback=?", function (data) { 
    $.each(data.streams, function (index, item) { 
       $("<img>").attr("src", item.preview.medium).attr("style", "margin-right:1%;margin-top:1%;").attr("id", "imgg").appendTo("#content"); 
         $("#imgg").click(function() { 
         var obj=$("<object></object>", 
         { "style" : "float:left;margin-left:1%;margin-bottom:1%;", 
         "height": "378", "width": "320", "bgcolor": "#000000", 
         "id" : "live_embed_player_flash", 
         "data" : "http://www.twitch.tv/widgets/live_embed_player.swf?channel=" + item.channel.display_name + "&auto_play=false" 
         }); 
         $('#placeholder').empty().append(obj); 
       }) 
    }); 

}); 
</script> 

Ошибка:

http://gyazo.com/5cd42fd599822344b0a00c5f8f5e63ab.png

Только эта ошибка возникает, когда я нажимаю на изображение кстати.

+0

Я поместил код на несколько строк и включил подсветку синтаксиса. Это также показывает, где код котировки ломается :-) – vogomatix

+0

Спасибо человеку! Думаю, я должен был это сделать D: – user3023566

ответ

1

Ваша строка коды имеет проблемное управление цитирует:

"$('#placeholder').html('<object type=" // being the string 
application/x-shockwave-flash // not in the string, the "/" here being the unexpected token. 

Это, вероятно, будет гораздо проще не пытаться делать это все в одной строке, и сгенерировать HTML блок объекта для заполнителя с помощью отдельной функции - возможно, создать его с помощью jQuery, а затем получить строку html?

+0

О, я понимаю, что вы имеете в виду, так как же я на самом деле это делаю? Одиночные кавычки завершат первую строку метода html. – user3023566

+2

@ user3023566: Я бы предложил не использовать HTML-строку для создания элемента. Это слишком много. Вместо этого создайте элементы DOM напрямую и установите их свойства. http://api.jquery.com/jQuery/#jQuery-html-attributes –

+0

Вы можете использовать \ для выхода из некоторых кавычек, но это плохой способ сделать это. Построение элементов DOM как @Felix предложило путь вперед – vogomatix

1
// this creates the object... 

var obj=$("<object></object>", 
    { "style" : "float:left;margin-left:1%;margin-bottom:1%;", 
    "height": "378", "width": "320", "bgcolor": "#000000", 
    "id" : "live_embed_player_flash", 
    "data" : "http://www.twitch.tv/widgets/live_embed_player.swf?channel=" + item.channel.display_name + "&auto_play=false" 
    }); 

// now you need to add the params to this 
.... 
// finally put it in place 
$('#placeholder').empty().append(obj); 
+0

. Как бы добавить объект? Может быть, если вы добавите это в свой код, я бы лучше понял, поскольку я все еще немного перепутал это. Теперь я знаю, что использование события javascript-щелчка будет проще, но я все еще ничего не вижу. – user3023566

+1

@ user3023566: '$ ('# placeholder'). Empty(). Append (obj);' –

+0

@FelixKling спасибо. К сожалению, я много путешествую и имею работу, поэтому я не смогу ее закончить. – vogomatix

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