Я искал способ создания модулей, которые можно было бы легко включить во все виды проектов. Я хотел не только сценарии в отдельном файле, но также определения шаблонов и тому подобное. Поскольку div не может быть объявлен в отдельном файле, мне пришлось искать другой путь. То, что я могу сделать, было это:
<head>
<title>DOMtest</title>
<script src='http://code.jquery.com/jquery-1.5.js'></script>
</head>
<body>
<script>
$(document).ready( function() {
$("#holder").load( "template_link.html", function() {
$("#test").append( clonelink( 1 ) );
$("#test").append( clonelink( 2 ) );
$("#test").append( clonelink( 3 ) );
});
$("#testbutton").click( function() {
$("#test").append( clonelink( 4 ) );
});
});
</script>
<div id='test' style='border: 1px solid black'>
<input type='button' id='testbutton' value='give me another clone'/>
</div>
<div id='holder' style='border: 1px solid black'>
</div>
</body>
</html>
затем в отдельном файле с именем template_link.html у меня было следующее:
<script src='http://code.jquery.com/jquery-1.5.js'></script>
<div id='template_link'>
This is a template<br />
Let's see if this works or <span class='link_clicktest'>not</span>!
</div>
<script>
$("span.link_clicktest").click( function() {
$d = $(this).closest( "div.link" );
alert( "span " + $d.attr( "id" ) + " was clicked" );
});
function clonelink( $id ) {
$c = $("#template_link").clone( true );
$c.attr( "id", $id );
$c.addClass( 'link' );
alert( $id + "-" + $c.html() );
return $c;
}
</script>
Сначала казалось, что это работает. Я объявил промежуток в шаблоне. Если вы нажмете «нет!» Вы получите идентификатор этого промежутка. Клонирование первых 3, кажется, работает, они отображаются на экране так, как они должны. Но тогда ...
Я нажал на кнопку "дай мне еще один клон". Клон действительно создан. С помощью оповещения в функции clonelink я вижу, что идентификатор попадает туда. Но даже с включенной опцией 'true' в .clone () - call, кажется, это не клонирует функциональность span.
Я наблюдаю за чем-то или пытаюсь сделать что-то, что не может быть сделано таким образом?