未触发 IE 单击事件跨度
IE click event span not triggered
我有这个网页
http://pocolocoadventures.be/reizen/
它应该过滤(用同位素.js)页面上的旅行框。它在野生动物园,铬,火狐,歌剧中也是如此。但在IE中,过滤器不起作用。更糟糕的是,JS在te span上的点击事件中根本没有反应。
这是js的一部分
// Travel Isotope
var container = $('#travel-wrap');
container.isotope({
animationEngine : 'best-available',
itemSelector: '.travel-box ',
animationOptions : {
duration : 200,
queue : false
},
});
$(".filters span").click(function(){
var elfilters = $(this).parents().eq(1);
if( (elfilters.attr("id") == "alleReizen") && elfilters.hasClass("non-active") )
{
$(".label").each(function(){
inActive( $(this) );
});
setActive(elfilters);
}
else{
//set label alleReizen inactive
inActive( $("#alleReizen") );
if( elfilters.hasClass("non-active") ){
setActive(elfilters);
}
else{
inActive(elfilters);
}
}
checkFilter();
var filters=[];
$(".search.filters").children().each(function(){
var filter = $(this).children().children().attr("data-filter");
if( $(this).hasClass("non-active") ){
filters = jQuery.grep(filters, function(value){
return value != filter;
});
}
else{
if(jQuery.inArray(filter,filters) == -1){
filters.push(filter);
}
}
});
filters = filters.join("");
filterItems(filters);
});
function filterItems(filters){
console.log("filter items with filters:" + filters);
container.isotope({
filter : filters,
}, function noResultsCheck(){
var numItems = $('.travel-box:not(.isotope-hidden)').length;
if (numItems == 0) {
$("#no-results").fadeIn();
$("#no-results").css("display", "block");
}
else{
$("#no-results").fadeOut();
$("#no-results").css("display", "none");
}
});
}
function setActive(el){
el.removeClass("non-active");
var span = el.find('i');
span.removeClass("fa-check-circle-o").addClass("fa-ban");
}
function inActive(el){
el.addClass("non-active");
var span = el.find('i');
span.removeClass("fa-ban").addClass("fa-check-circle-o")
}
function checkFilter(){
var filterdivs = $('.filters span').parent().parent();
if( filterdivs.not('.non-active').length == 0 ){
setActive( $("#alleReizen") );
}
var filterLabels = $(".filters .label");
if( filterLabels.not('.non-active').length == 0){
setActive( $("#alleReizen") );
}
}
function noResultsCheck() {
var numItems = $('.item:not(.isotope-hidden)').length;
if (numItems == 0) {
//do something here, like turn on a div, or insert a msg with jQuery's .html() function
alert("There are no results");
}
}
可能是一些小而愚蠢的东西;但我找不到它。提前感谢!
在您的网站上,您已经构建了如下所示的按钮:
<button>
<span>
</span>
</button>
现在,button
元素被设计为一个按钮。它与input button
不同.在后者中,您将使用 value
设置标题。在按钮元素中,将其设置为文本节点。button element
可以包含跨度等元素。该规范不太清楚是否应该在按钮元素的子元素上具有事件处理程序。这是浏览器开发人员对允许与否的解释。
此问题之前已在此处发布过(几次)
- 跨度内按钮,在 ff 中不可点击
- Firefox 上
根据您的发现,似乎Firefox允许它。IE不是。因此,为了安全起见:按预期方式使用按钮。
- 将按钮包装在跨度内(不是很合逻辑)
- 将单击处理程序放在按钮上。
$(".filters button").click(...);
在
控制台上玩了一下,这似乎效果很好。
$(".filters").on('click', 'span', function(){
// foo here
console.log('foo');
});
也许过滤器是在页面加载后由您的一个 js 文件操作的?.on 将允许您选择一个容器,该容器侦听其中发生的更改,传递您希望实际操作处理的元素。
如果对您来说没问题,我建议使用 <button>
元素,而不是 <span>
.
让我知道这是否适合您。
相关文章:
- 如何使用2个事件单击1个日历
- 在 javascript 事件单击后清空输入
- 在元素 SVG 中使用 JavaScript 或 jQuery 进行事件单击
- fullCalendar动态事件单击行为
- 错误:'这'对象不正确;在JQuery中单击事件-单击时的意外行为
- 如何启用事件单击仅在指定的小时范围内
- 完整日历事件单击未触发
- 打开选择之前的事件.(单击工作速度不够快)
- 在 JavaScript 中,函数不会在事件单击时触发
- 主干分组依据集合仅在一次事件单击后呈现
- 如何禁用地图上的所有鼠标事件(单击、悬停等)
- Fullcalendar将图标添加到事件而不触发事件单击
- 在将JQuery对象添加到DOM之前,请将事件单击到JQuery对象
- 如何模拟拖动事件(单击鼠标移动按钮)
- 如果可编辑为 false,则全日历事件单击处理程序不起作用
- onclick事件单击时未添加类
- 事件单击Kml Placemark
- 事件单击时没有运行数据库
- 在事件单击函数中添加href url
- 创建元素和事件(单击)