jquery on()with addClass / removeClass

时间:2013-01-23 14:15:05

标签: javascript jquery ios ipad

我有这个脚本需要在ipad上工作。它正在使用live进行chrome工作,然而,将其移动到使其无响应。

任何想法,我将不胜感激!

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

3 个答案:

答案 0 :(得分:3)

试试这个

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

<强>更新

建议

$(document).on('click',"#clickAll", function(){
    $(".welcome1poi").toggle();
    $(this).toggleClass("active");
});

因为它正在使用live()我假设你的元素clickAll是动态添加的,所以试试这个

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

您可以将$(document)选择器替换为最接近#clickAll元素的元素,这样会更有效率

答案 1 :(得分:1)

这会将事件委托给body,当它冒充DOM时会被捕获。

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

答案 2 :(得分:-1)

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

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