Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 无法为handlebar span类调用onclick_Jquery_Handlebars.js - Fatal编程技术网

Jquery 无法为handlebar span类调用onclick

Jquery 无法为handlebar span类调用onclick,jquery,handlebars.js,Jquery,Handlebars.js,我面临jQueryOnClick事件和手柄的问题 我有一个把手模板,上面有ul、li和span元素,形成了一个水平导航菜单。 我为每个span定义了一个类,为hover和selected编写了css类 Hover工作正常,但是如果我选择span元素,我不会被重定向到包含在其中一个JS文件中的onclick事件 这是我的车把模板 var policyMenu = '<ul class="menu menuStyle"><li style="float:left;"><

我面临jQueryOnClick事件和手柄的问题

我有一个把手模板,上面有ul、li和span元素,形成了一个水平导航菜单。 我为每个span定义了一个类,为hover和selected编写了css类

Hover工作正常,但是如果我选择span元素,我不会被重定向到包含在其中一个JS文件中的onclick事件

这是我的车把模板

var policyMenu = '<ul class="menu menuStyle"><li style="float:left;"><span class="mn selected" rel="environmental" title="Environmental policy" >Environmental</span></li><li style="float:left;"><span class="mn" rel="employee">Employee</span></li><li style="float:left;"><span class="mn" rel="customer">Customer</span></li><li style="float:left;"><span class="mn" rel="assets" >Assets</span></li></ul><br><br><br><div id="chart_container" style="min-width:39%;"></div>';

我无法在onclick中打印警报。

您应该使用委派,因为在加载脚本时,DOM树上不存在新元素。 这样,事件处理程序将附加到参与选择器的每个新元素

$(document).on('click', 'ul.menu li span.mn', function() { 
    if ( $(this).hasClass('selected') )
        return;     

    $('ul.nav li span.mn').removeClass('selected');
    $(this).addClass("selected");

    selectedMenu = $(this).attr('rel');     
    displaySearchOptions();
});

来源:

您是否尝试过委派?我对车把一无所知,但可能是动态添加了这些元素。Try:
$(document).on('click','ul.menu li span.mn',function(){})
确实有效@MelanciaUK谢谢你的工作。但是我仍然有一个问题,CSS类在选择后没有改变。@Aamir这真的很奇怪。.它是在小提琴中工作的。是因为我在包含的JS文件中有脚本吗?如果元素选择了类
,那么它将返回,所以它永远不会改变。if($(此).hasClass(“选定”)返回;是正确的。如果当前元素已被选中,它将返回,而这里不是这种情况。如果不是,它将从以前选定的元素中删除选定的类,并将选定的类分配给当前选定的元素。它现在正在工作。我有一个打字错误,并使用了不同的类名“nav”而不是“menu”.现在我纠正了它,它工作得很好。
$(document).on('click', 'ul.menu li span.mn', function() { 
    if ( $(this).hasClass('selected') )
        return;     

    $('ul.nav li span.mn').removeClass('selected');
    $(this).addClass("selected");

    selectedMenu = $(this).attr('rel');     
    displaySearchOptions();
});