我最近开始学习jquery,我决定写一个小插件作为练习。
这里是jsfiddle链接:http://jsfiddle.net/ndanvery/hy4cY/35/
现在我有两个问题:
$('#wrapper:not(.big)').addClass("not_focused");
无论如何,感谢大家帮助我:)
编辑:
对不起,但我不得不承认我的问题不是很清楚。
我在第一个问题中寻找的是一种方法,让点击时可以看到跨度STAY,而不是消失!
再次,抱歉误解......
答案 0 :(得分:1)
1)你的鼠标中的e.focus不工作(对我来说它是空的),所以你总是进入淡出div的if语句。然后,由于事件捕获/冒泡你的跨度点击处理程序然后再触发,然后将其淡入。你最好检查你直接点击的元素(使用e.target)是不是.big跨度,类似于:
$(document).mouseup(function (e) {
if(!$(e.target).hasClass(".big")) {
$(".big").fadeOut("slow");
$('#wrapper').removeClass("not_focused");
}
});
2)你的selector $('#wrapper:not(.big)')说“找到没有大类的包装器id的元素”,这不是你想要的,哪个只是给你包装。你正在淡出包装内容,淡化其中的所有内容。
你可以淡出不是你点击过的孩子:
$("[id^=span]").click(function () {
$("[id^=span]").not(this).addClass("not_focused");
$(this).find('.big').fadeIn("fast");
$('#wrapper:not(.big)').addClass("not_focused");
$(this).dequeue();
});
或者你可以淡出包装并复制.big范围并将其附加到文档后面的包装器上,以便它位于上面。
答案 1 :(得分:0)
第一个问题的答案:Event propogation
您的第二个问题的答案是您正在设置包装器的不透明度,而不透明度又会影响其所有子项的不透明度。如果您只想让一些包装内容具有不同的不透明度,则必须选择这些元素并为它们指定不透明度。
答案 2 :(得分:0)
$("div[id^=span]").click(function(e) {
$(this).find('.big').fadeIn("fast");
$(this).dequeue();
}).find('.big').click(function(e) {
e.stopPropagation();
});
试试这个工作正常。