在ajax.load调用后执行javascript时出现问题
Trouble executing javascript after ajax .load call
我对Jquery没有太多经验,并且在编写适当的回调函数时遇到了问题,因此在通过ajax.load()调用加载html内容后,会执行一个单独的javascript函数。
以下代码加载外部html内容
$('#myID').find('a').on('click', function(){
e.preventDefault();
var $desc = $('#insert');
switch($(this).attr('href')) {
case 'content1.html' :
$desc.load('fragments/content1.html');
break;
case 'content2.html' :
$desc.load('fragments/content2.html');
break;
}
});
然后,必须在由上一个功能加载的html上执行以下代码
var panelWidth = 0;
var startPanel = 1;
window.panelWidth = $('.sp').width();
$('.panel_container .hiw_panel').each(function(index){
$(this).css({'width':window.panelWidth+'px','left':(index*window.panelWidth)});
$('.sp .panels').css('width',(index+1)*window.panelWidth+'px');
});
$('.switcher span').each(function(){
$(this).on('click', function(){
changePanels( $(this).index() );
});
});
function changePanels(newIndex){
var newPanelPosition = ( window.panelWidth * newIndex ) * -1;
$('.switcher span').removeClass('selected');
}
我删除了多余的内容,使其尽可能简洁。我只需要知道如何在第一部分之后执行第二部分。谢谢你的帮助!
嗯,可能是这样的:
$( '#myID' ).on( 'click', 'a', function( e ) {
e.preventDefault();
$( '#insert' ).load( $( this ).attr( 'href' ), function() {
var panelWidth = 0;
var startPanel = 1;
window.panelWidth = $( '.sp' ).width();
$( '.panel_container .hiw_panel' ).each( function( index ) {
$( this ).css({
'width': window.panelWidth,
'left': ( index * window.panelWidth )
});
$( '.sp .panels' ).css({
'width': ( index + 1 ) * window.panelWidth
});
});
$( '.switcher span' ).each( function() {
$( this ).bind( 'click', function() {
changePanels( $( this ).index() );
});
});
});
});
function changePanels( newIndex ) {
var newPanelPosition = ( window.panelWidth * newIndex ) * -1;
$( '.switcher span' ).removeClass( 'selected' );
}
它所做的是绑定到a
单击,然后加载a
标记的href
属性,然后执行回调函数,即步骤2代码。(您可以在这里阅读更多关于.load()的信息);
我认为您的changePanels
函数可能缺少一些东西,因为没有使用var
,但这很容易整理。
给函数一个名称,例如executeAfterLoad(),并将其作为.load:的参数包含在内
case 'content1.html' :
$desc.load('fragments/content1.html',executeAfterLoad);
break;
case 'content2.html' :
$desc.load('fragments/content2.html',executeAfterLoad);
break;
我想您正在寻找:
$desc.load('fragments/content1.html', function(){
//cb code here
});
第二个参数是在请求完成时执行的回调函数。
相关文章:
- 我不知道我的编码有什么问题.(JavaScript)
- 登录后重定向,缓存页面问题-Javascript
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- 浮点数字问题JavaScript
- 局部全局变量问题 - JavaScript
- 内容滑块问题 javascript
- 多个脚本导致链接问题?Javascript、CSS、HTML、Jquery
- 基本范围问题(javascript和node)
- 表单验证问题(Javascript)
- 表杂乱无章的问题.Javascript HTML5.
- 我的代码有什么问题.JavaScript幻灯片
- 这段代码有什么问题?(JavaScript)
- 浏览器和移动设备的视差背景问题(javascript/jquery)
- Mozilla中的setInterval()问题(Javascript函数)
- While循环问题-JavaScript-jQuery.Clone()
- 检查密码匹配问题(JavaScript)
- 抓取选中单选按钮的问题- JavaScript
- 基于下拉选择禁用文本字段的问题(JavaScript)
- 比较日期问题- javascript
- 浏览器兼容性问题Javascript