使用 jquery append 时 onload 不起作用
onload not working when using jquery append
我需要在通过 ajax 加载元素并附加到 DOM 时触发脚本。
这里是HTML
<div id="one">
<p>one</p>
<button>Append</button>
</div>
这里是javascript
$('button').on('click', function(){
//in real life s is loaded via ajax
var s="<p onload='myalert();'>two</p>";
$('#one').append(s);
})
function myalert() {
alert('ok');
}
警报永远不会触发。如何在元素完全加载时捕获事件?
这里是 codepen 沙箱,供大家玩玩:https://codepen.io/xguntis/pen/rQERmW
您不能在那里使用 onload
事件。为什么不在事件处理程序的末尾添加 alert
语句?
$('button').on('click', function(){
//in real life s is loaded via ajax
var s="<p>two</p>";
$('#one').append(s);
alert('ok');
})
试试这个..
$('button').on('click', function(){
//in real life s is loaded via ajax
var s="<p id='twoP' >two</p>";
$('#one').append(s).ready(function(){
alert('ok');
});
})
这将加载元素然后触发回调
我已尝试解决您的问题。
所以我找到了解决问题的方法。
这是我的代码
$('button').on('click', function(){
//in real life s is loaded via ajax
var s="<p>two</p>";
$('#one').append(s).ready(function(){
alert('ok');
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<div id="one">
<p>one</p>
<button>Append</button>
</div>
我需要在通过 ajax 加载元素并附加到 DOM 时触发脚本。
这里是HTML
<div id="one">
<p>one</p>
<button>Append</button>
</div>
这里是javascript
$('button').on('click', function(){
//in real life s is loaded via ajax
var s="<p onload='myalert();'>two</p>";
$('#one').append(s);
})
function myalert() {
alert('ok');
}
警报永远不会触发。如何在元素完全加载时捕获事件?
这里是 codepen 沙箱,供大家玩玩:https://codepen.io/xguntis/pen/rQERmW
您不能在那里使用 onload
事件。为什么不在事件处理程序的末尾添加 alert
语句?
$('button').on('click', function(){
//in real life s is loaded via ajax
var s="<p>two</p>";
$('#one').append(s);
alert('ok');
})
试试这个..
$('button').on('click', function(){
//in real life s is loaded via ajax
var s="<p id='twoP' >two</p>";
$('#one').append(s).ready(function(){
alert('ok');
});
})
这将加载元素然后触发回调
我已尝试解决您的问题。 所以我找到了解决问题的方法。 这是我的代码
$('button').on('click', function(){
//in real life s is loaded via ajax
var s="<p>two</p>";
$('#one').append(s).ready(function(){
alert('ok');
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<div id="one">
<p>one</p>
<button>Append</button>
</div>