Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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
Javascript 带有addClass/removeClass的()上的jquery_Javascript_Jquery_Ios_Ipad - Fatal编程技术网

Javascript 带有addClass/removeClass的()上的jquery

Javascript 带有addClass/removeClass的()上的jquery,javascript,jquery,ios,ipad,Javascript,Jquery,Ios,Ipad,我有这个脚本需要在ipad上运行。它正在使用live开发chrome,但是,将其移动到on会使其无响应 如果有任何想法,我将不胜感激 $("#clickAll").on("click", function () { $(".welcome1poi").show(); $(this).addClass("active"); }); $("#clickAll.active").on("click", function () { $(this).removeClass("act

我有这个脚本需要在ipad上运行。它正在使用live开发chrome,但是,将其移动到on会使其无响应

如果有任何想法,我将不胜感激

$("#clickAll").on("click", function () {
    $(".welcome1poi").show();
    $(this).addClass("active");
});
$("#clickAll.active").on("click", function () {
    $(this).removeClass("active");
    $(".welcome1poi").hide();
});
试试这个

$("#clickAll").on("click", function(){
    $(".welcome1poi").toggle();
    $(this).toggleClass("active");
});
已更新

$(document).on('click',"#clickAll", function(){
    $(".welcome1poi").toggle();
    $(this).toggleClass("active");
});
如建议的那样

$(document).on('click',"#clickAll", function(){
    $(".welcome1poi").toggle();
    $(this).toggleClass("active");
});
由于它使用的是live(),因此我假设您的id为
clickAll
的元素是动态添加的,因此请尝试以下操作

$(document).on("click","#clickAll", function () {
   $(".welcome1poi").show();
   $(this).addClass("active");
});
$(document).on("click","#clickAll.active", function () {
  $(this).removeClass("active");
   $(".welcome1poi").hide();
});

您可以将
$(文档)
选择器替换为与
#clickAll
元素最近的元素,这将更有效

这将把事件委托给
主体
,当它在DOM中冒泡时将被捕获

$('body').on("click", "#clickAll", function(){
    $(".welcome1poi").show();
    $(this).addClass("active");
});
$('body').on("click", "#clickAll.active", function(){
    $(this).removeClass("active");
    $(".welcome1poi").hide();
});

您是否添加和删除“活动”类以创建切换效果?如果是,请尝试.toggle(),如下所示:

$('#clickAll).toggle(
    function() { $('.welcome1poi').show(); }, 
    function() { $('.welcome1poi').hide(); });

如果在代码运行后将
#clickAll
添加到DOM中,则需要将事件委派到DOM树的更高层。请阅读。可能的副本不需要两个事件。使用toggleClass,就像我刚才添加的副本一样,并切换以显示和隐藏其他元素!是的,问题是在点击之前,一些带有welcome1poi类的项目将被打开/关闭…这在问题中没有提到,所以我向您展示了实现。。。但是如果是这样的话,我会更新我的答案…请检查你的更新版本。。。当添加了
active
类时,这两个事件不会触发吗?嘿,很抱歉。谢谢你的帮助,语法上的一课对我很有帮助。已在1.8中弃用,并在1.9中删除。我不建议在jQuery的旧版本中使用它,因为它是不推荐使用的。谢谢,我不知道为什么我没有想到这一点!这不是正确的解决方案,因为它已被弃用!问题:。在升级jQuery版本时,请随意使用它,并让代码停止工作。或者您可以使用toggle和toggleClass选择@bipen的解决方案,并让它工作。OMG!但如果您继续使用早期版本的jQuery,这个解决方案就很好了。@JayBlanchard和我预测,几个月后,JamesB会问为什么这段代码不再有效。;)这附近经常发生这种事。第一次就把它做好,以后也不必再修了。没有办法保证那里的活动顺序!你说的@epascarello事件顺序是什么?你能保证没有类的不会在有类的之前被调用吗?它们都适用于同一元素。另外,代码只是重新发明了toggle和toggleClass。我只是修改了OP的代码并回答了他最初的问题。最新版本的jQuery不推荐使用toggle()