我相信你應該使用文檔,因爲這是這裏綁定的地方,然後找到那些孩子並做off()
$(document).find(".parent2").off("mouseover mouseout", ".child");
我使用修訂標記,使你根本沒有正確與
<div class="parent1">
<div class="child">child1</div>
<div>...
我用這個標記來測試關閉格的假設測試(div的是對等/兄弟姐妹而不是大孩子)。澄清,如果這不是一個正確的假設發佈正確的標記。
<div class="parent1">
<div class="child">child1</div>
</div>
<div class="parent2">
<div class="child">child2</div>
</div>
原來,測試後的第一次嘗試沒有奏效。這是因爲事件綁定到文檔,然後由具有類.child
選擇器的孩子過濾,當它具有適當的元素時觸發。我無法修改那些綁定的「過濾器」,所以我不得不簡單地「重做」綁定,過濾新的孩子 - 如果你添加新元素後不能正常工作 - 你需要執行這個如果你隨後重新添加更多的孩子 - 注意它綁定到.child
而非文檔。不是一個完美的場景,但我能找到最好的場景。
$(document).off("mouseover mouseout", ".child").find('.child').filter(function() {
return !$(this).parents(".parent2").length;
}).on("mouseover mouseout", function() {
console.log("new " + $(this).text());
});
我試過這個。它似乎沒有工作。 – Mano
'.child'是否動態追加? –
是@Louys。 .child被動態地插入DOM – Mano