2012-04-27 104 views
0

下面这段代码是通过AJAX加载:AJAX加载脚本不能正常运行

<div class="main"> 
    //some content 
</div>  
<div class="advanced"> 
    //some content 
</div> 
<div class="other"> 
    //some content 
</div> 
<div class="pass"> 
    //some content 
</div> 
<script>$('.advanced,.other,.pass').hide();</script> 

正常加载时,他们隐藏罚款,但通过AJAX加载时它不工作了。为什么这样?我不确定$.on()真的会在这里帮助。

+1

@Adable标记的jQuery,是不是很明显? – Joseph 2012-04-27 11:38:46

+0

$ .on()用于绑定事件处理程序,所以这里不是问题,您使用哪个函数来执行AJAX调用?如果通过jQuery来做,它可能会被剥离出来,所以你需要从调用者页面中完成。 – GillesC 2012-04-27 11:39:40

+0

@Joseph,许多网站使用Ajax.Net与jQuery结合使用,并不像你明白的那样明显。 – 2012-04-27 11:44:10

回答

1

如果上面的例子中是通过jQuery AJAX加载,为什么不叫

$(”先进,。其他,.pass。)隐藏()。

完成ajax请求后?

例如:

$.ajax({ 
    url: "Your AJAX URL", 
    dataType: 'html', 
    type: "POST", 
    success: function (json) { 
     // Add you elements to the DOM 
    }, 
    complete: function() { 
     $('.advanced,.other,.pass').hide(); 
    } 
}); 
+0

这适用于我拥有的许多视图(MVC)。这会在脚本当前不被使用/需要时相当增加脚本的行数(如那样)。 – Michelle 2012-04-27 11:40:45

+1

@Jack,创建一个common.js,将调用定义为函数一次,并在需要时重用。 – 2012-04-27 11:43:07

0

根据jQuery

任何嵌入的JavaScript所检索的数据内的HTML被作为字符串返回之前被执行。

这可能意味着您的脚本首先执行,然后再设法执行任何操作。

+0

我试着将它们包装在'$(function(){/ * hide * /});'但它没有隐藏它们。 – Michelle 2012-04-27 11:45:06