Во первых $(".parent div") означает - получить все элементы div элемента с классом parent. Чего вам и хочется, хотя правильнее будет так:
$(".parent > div")
только так $("div .parent") - это означает в неком div получить элемент с классом parent. И в каком это div он у вас находится и с чего бы это работало?
Ваше "работает", может быть только так:
$("div.parent > div").hover(function(){
$(this).toggleClass("opacity");
});
ибо просто обращение по классу без указания тега, это
поиск всех элементов документа отвечающих этому селектору. Чего делать не рекомендуется.
Вам две копии примера показали, они рабочие.
PS. Если parent содержит один элемент, то зачем обращаться к child через него?