我正在尝试使用jquery在单击事件上基于条件执行多个函数。
这是我的代码:
$(document).ready( function (){
var Acco_head = $('#Dashbordacco > li > a');
var Acco_body = $('#Dashbordacco > li > div');
Acco_head.first().addClass('active').next().show();
Acco_head.on('click', function(event){
if(myScroll != undefined || myScroll != null) {
refreshScroller(myScroll);
}
event.preventDefault();
if ($(this).attr('class') != 'active'){
Acco_body.slideUp('normal');
if ($(this).attr('class') = 'UE') {
callPortfolioDataUrl(PortfolioDataUrl)
}
$(this).next().stop(true,true).slideToggle('normal');
Acco_head.removeClass('active');
$(this).addClass('active');
}
});
});
这是HTML: -
<li class="UE"><a href="#">Upcoming Events</a>
<div id="indexdata2">
</div></li>
但它会抛出如下错误:“赋值的左侧不是引用。”。
任何帮助?
答案 0 :(得分:1)
使用comparison operator
if ($(this).attr('class') === 'UE') {
而不是Assignment operator
。
if ($(this).attr('class') = 'UE') {
尝试,
$(document).ready( function (){
var Acco_head = $('#Dashbordacco > li > a');
var Acco_body = $('#Dashbordacco > li > div');
Acco_head.first().addClass('active').next().show();
Acco_head.on('click', function(event){
if(myScroll != undefined || myScroll != null) {
refreshScroller(myScroll);
}
event.preventDefault();
if ($(this).hasClass('active')){
Acco_body.slideUp('normal');
if ($(this).hasClass('UE')) {
callPortfolioDataUrl(PortfolioDataUrl)
}
$(this).next().stop(true,true).slideToggle('normal');
Acco_head.removeClass('active');
$(this).addClass('active');
}
});
});
修改强>
使用.hasClass('classname')
检查源元素是否具有特定类
答案 1 :(得分:1)
以下是导致错误的分配:
if ($(this).attr('class') = 'UE') {
您应该使用比较运算符:
if ($(this).attr('class') == 'UE') {
答案 2 :(得分:1)
在Javascript中,单个等号(=
)用作赋值运算符,而两个(==
)或三个(===
)用于比较。 ==
会在比较之前隐式转换类型,因此如果不进行类型转换,===
会更好。要解决您的问题,请更改:
if ($(this).attr('class') = 'UE') {
对此:
if ($(this).attr('class') === 'UE') {