Javascript 嵌套脚本?
我有一个空div,如下所示:Javascript 嵌套脚本?,javascript,jquery,Javascript,Jquery,我有一个空div,如下所示: <div id="my-content"></div> /**IGNORE THIS**/ function makeButton(){ $('#my-content').html('<input type="button" value="Say hey" id="my-button" />'); } makeButton(){ $.ajax({ type: 'POST', ur
<div id="my-content"></div>
/**IGNORE THIS**/
function makeButton(){
$('#my-content').html('<input type="button" value="Say hey" id="my-button" />');
}
makeButton(){
$.ajax({
type: 'POST',
url: 'ajax_images.php',
data: {pageNr: pageNr},
success:function(response) {
//Loops the json and does something like this:
var HTML = '<div id="thumbnail">;
HTML += 'Response Stuff'
HTML += '</div>';
$('#my-content').html(HTML);
}
});
}
工作完美,但是,当我在这之后为这个按钮做了一个触发器时,它看起来如下所示,它不响应按钮id
$(document).ready(function(){
makeButton();
$('#my-button').click(function(){
alert('Hello!');
});
});
我当然可以添加$(文档)。准备好了吗。。。废话。。。警惕(“你好”)将>编码到makeButton函数的.html()中,但我想这不是真正的方法
在makeButton()准备好并添加了按钮后,我将如何告诉JS开始侦听单击
编辑:
好的,行了。很抱歉实际情况并非如此,而是类似的
makeButton()实际上是另一个通过ajax获取数据的函数,因此makeButton更像这样:
<div id="my-content"></div>
/**IGNORE THIS**/
function makeButton(){
$('#my-content').html('<input type="button" value="Say hey" id="my-button" />');
}
makeButton(){
$.ajax({
type: 'POST',
url: 'ajax_images.php',
data: {pageNr: pageNr},
success:function(response) {
//Loops the json and does something like this:
var HTML = '<div id="thumbnail">;
HTML += 'Response Stuff'
HTML += '</div>';
$('#my-content').html(HTML);
}
});
}
makeButton(){
$.ajax({
键入:“POST”,
url:'ajax_images.php',
数据:{pageNr:pageNr},
成功:功能(响应){
//循环json并执行如下操作:
var HTML=';
HTML+=“响应内容”
HTML+='';
$(“#我的内容”).html(html);
}
});
}
抱歉让人困惑。只需做一个简单的更改:
$(document).ready(function(){
makeButton();
$('#my-content').on('click', '#my-button', function(){
alert('Hello!');
});
});
加载页面后,#我的按钮
进入DOM树时,需要委托事件。要了解jQuery中委托事件绑定的更多信息,请参阅。只需做一个简单的更改:
$(document).ready(function(){
makeButton();
$('#my-content').on('click', '#my-button', function(){
alert('Hello!');
});
});
加载页面后,#我的按钮
进入DOM树时,需要委托事件。要了解jQuery中委托事件绑定的更多信息,请参阅。问题在于,您试图在元素存在之前绑定事件处理程序。Ajax调用是异步的
您可以从$.ajax
调用返回promise对象:
function makeButton(){
return $.ajax({
// ...
});
}
然后在Ajax调用成功时通过添加回调绑定事件处理程序:
makeButton().done(function() {
$('#my-button').click(function(){
alert('Hello!');
});
});
或者,您也可以使用事件委派,如图所示。要进一步了解Ajax的工作原理,请看一看。问题在于您试图在元素存在之前绑定事件处理程序。Ajax调用是异步的
您可以从$.ajax
调用返回promise对象:
function makeButton(){
return $.ajax({
// ...
});
}
然后在Ajax调用成功时通过添加回调绑定事件处理程序:
makeButton().done(function() {
$('#my-button').click(function(){
alert('Hello!');
});
});
或者,您也可以使用事件委派,如图所示。要进一步了解Ajax的工作原理,请看一看。我想您可以轻松地将click函数放在te ready括号的下面?您的问题在其他地方,代码运行正常。对我来说很好:什么不起作用?您是否多次调用make按钮?如果是这样,那可能是你的问题,因为你不能有多个ID具有相同的值。哦,该死的,好吧,我会进行编辑。这只是一个目前对我不起作用的示例,我将进行更新…@gubbfett请务必尝试您在此处发布的代码。这避免了浪费每个人的时间。我想你可以很容易地把点击功能放在te ready括号的下面?你的问题在其他地方,代码运行正常。对我来说很好:什么不起作用?您是否多次调用make按钮?如果是这样,那可能是你的问题,因为你不能有多个ID具有相同的值。哦,该死的,好吧,我会进行编辑。这只是一个目前对我不起作用的示例,我将进行更新…@gubbfett请务必尝试您在此处发布的代码。这样可以避免浪费每个人的时间。先生,你让我高兴极了!谢谢先生,你让我高兴极了!谢谢