Ссылка #loadContent будет загружать tree.html. После успешной загрузки содержимого сценарий повторно инициализирует некоторые функции, которые находятся в tree.html. Однако я не могу заставить событие .click функционировать в загруженном контенте.JQuery вложенное событие div .click
Index.html
<a href="#" id="loadContent">Load</a>
<script type="text/javascript">
$(function() {
$("#loadContent").click(function() {
$.ajax({
url: "tree.html"
,success: function(data) {
$('#result').html(data);
$("#demo_1").tree({
rules : {
use_max_children : false,
use_max_depth : false
},
callback : {
onmove : function (NODE,REF_NODE,TYPE,TREE_OBJ,RB) {
alert(TREE_OBJ.get_text(NODE) + " " + TYPE + " " + TREE_OBJ.get_text(REF_NODE));
}
}
});
}
});
});
});
</script>
<script type="text/javascript" class="source">
$(function() {
$.tree.drag_start = function() {
$("#log").append("<br />Drag start ");
};
$.tree.drag = function() {
$("#log").append(" .");
};
$.tree.drag_end = function() {
$("#log").append(" Drag end<br />");
};
$("#demo_1").tree({
rules : {
use_max_children : false,
use_max_depth : false
},
callback : {
onmove : function (NODE,REF_NODE,TYPE,TREE_OBJ,RB) {
alert(TREE_OBJ.get_text(NODE) + " " + TYPE + " " + TREE_OBJ.get_text(REF_NODE));
}
}
});
$("#demo_2").tree({
rules : {
use_max_children : false,
use_max_depth : false
},
callback : {
onmove : function (NODE,REF_NODE,TYPE,TREE_OBJ,RB) {
alert(TREE_OBJ.get_text(NODE) + " " + TYPE + " " + TREE_OBJ.get_text(REF_NODE));
}
}
});
});
</script>
<div class="demo" id="demo_2">
<ul>
<li id="phtml_1" class="open"><a href="#"><ins> </ins>Root node 1</a>
<ul>
<li id="phtml_2"><a href="#"><ins> </ins>Child node 1</a></li>
<li id="phtml_3"><a href="#"><ins> </ins>Child node 2</a></li>
<li id="phtml_4"><a href="#"><ins> </ins>Some other child node with longer text</a></li>
</ul>
</li>
<li id="phtml_5"><a href="#"><ins> </ins>Root node 2</a></li>
</ul>
</div>
<div id="result"></div><br>
<div id="log"></div>
tree.html
<div class="demo" id="demo_1">
<ul>
<li id="phtml_1" class="open"><a href="#"><ins> </ins>Root node 1</a>
<ul>
<li id="phtml_2"><a href="#"><ins> </ins>Child node 1</a></li>
<li id="phtml_3"><a href="#"><ins> </ins>Child node 2</a></li>
<li id="phtml_4"><a href="#"><ins> </ins>Some other child node with longer text</a></li>
</ul>
</li>
<li id="phtml_5"><a href="#"><ins> </ins>Root node 2</a></li>
<li><a class="preset_text" id="1">model 1</a> </li>
<li><a class="preset_text" id="2">model 2</a></li>
</ul>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('.preset_text').click(function(){
var target = $(this).attr("id");
alert(target);
});
});
</script>
В tree.html, я не могу получить предупреждение (цель). Однако, если я переместил этот раздел из «div # demo_1» в tree.html, я могу получить предупреждение (цель).
<a class="preset_text" id="1">model 1</a>
<a class="preset_text" id="2">model 2</a>
Как я могу обнаружить элемент, нажатый в div demo_1? Благодаря
Что на самом деле все ' ' s для? – Eric
Работает ли оно, если вы удаляете '$ (document) .ready()' (не уверен, что это событие запущено при вставке в существующую DOM)? И хотя jQuery пытается угадать возвращаемый тип данных, возможно, вы должны явно указать тип данных в своем вызове Ajax: 'dataType: html' –