单击事件的多个功能

时间:2013-12-20 05:45:41

标签: javascript jquery cordova

我正在尝试使用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>

但它会抛出如下错误:“赋值的左侧不是引用。”。

任何帮助?

3 个答案:

答案 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') {