我有一个带有javascript代码的View
和Desk.js
文件
在View
:
<script src='@Url.Content("~/Scripts/KazBilet/Desk.js")' type="text/javascript"></script>
在Desk.js
文件中:
$(function () {
$('.wraper').load('/desk/getsessionscreen');
toggleSession();
});
function toggleSession() {
alert('a');
$('.sched a').on('click', function () {
var target = $(this);
$(this).toggleClass('selected');
$('.sched a').not(target).each(function () {
$(this).removeClass('selected');
});
setStateForStepButton();
});
}
包含sched
类和a
标记的元素在部分视图中包含加载到wraper
div元素中。
click
处理程序中的问题没有解决,但alert
调用正常。怎么解决?
感谢
答案 0 :(得分:2)
您可以将您的点击订阅代码放在外面。您甚至不需要等待DOM准备就绪:
$('.sched').on('click', 'a', function () {
var target = $(this);
$(this).toggleClass('selected');
$('.sched a').not(target).each(function () {
$(this).removeClass('selected');
});
setStateForStepButton();
});
$(function () {
$('.wraper').load('/desk/getsessionscreen', function() {
toggleSession();
});
});
function toggleSession() {
alert('a');
}
如果你想要热烈地注册,还要注意我用于.on()
方法的正确重载:
$('.sched').on('click', 'a', function () {
另请注意,如果要在AJAX调用成功时调用toggleSession
函数,则应使用.load
方法的成功回调。
答案 1 :(得分:1)
您需要在加载回调中调用toggleSession(),否则内容可能尚未加载,因此您的选择器无法找到所需的元素。
$('.wraper').load('/desk/getsessionscreen', function () {
toggleSession();
});
答案 2 :(得分:0)
代码似乎是正确的,但过去on()
我遇到了一些问题。试试这个:
$(document).on('click', '.sched a', function () {
var target = $(this);
$(this).toggleClass('selected');
$('.sched a').not(target).each(function () {
$(this).removeClass('selected');
});
setStateForStepButton();
});
另外,如果您尝试将课程selected
仅设置为a
点击,我应该将您的代码重写为:
$(document).on('click', '.sched a', function () {
$('.sched a').removeClass('selected');
$(this).addClass('selected');
setStateForStepButton();
});
正如yan.kun所说,在load()