изменён формат опций, добавлена возможность установить свою функцию исчезновения
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.orange {
background: #FFCC00;
}
.orange + div {
display: block;
}
span {
cursor: pointer;
}
.red {
background: rgb(255, 20, 20);
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
jQuery.fn.hide_by_click = (function() {
var defaults = {
add: true,
done: function() {
$(this).fadeOut()
}
}
var listSelector = $(),
tracking = function(event) {
listSelector.each(function(i, el) {
if (event.target != el && !$(el).has(event.target).length) defaults.done.call(el)
})
}
return function(options) {
defaults = $.extend({}, defaults, options);
$(document).off({
'click': tracking
});
this.each(function(indx, el) {
listSelector = listSelector[defaults.add ? 'add' : 'not'](el);
});
listSelector.length && $(document).on({
'click': tracking
});
return this
}
}())
$(function() {
$(".block_info_main .info").hide_by_click(); //добавить все span.info для контроля
$(".orange").hide_by_click({
'add': true,
'done': function() {
$(this).addClass("red").fadeOut(2000)
}
}); // добавить оранжевый, изменить функцию исчезновения
});
</script>
</head>
<body>
<div class='block_info_main' id='test'>1111
<div class='first'>
<span class='orange'>Информация</span>
<div class='main'>
<span class='info_show show '>текст1</span>
</div>
</div>
<div class='first'>
<span class='info'>Информация2</span>
<div class='main'>
<span class='info_show '><b style="color: rgb(51, 51, 255)">текст2</b></span>
</div>
</div>
<div class='first'>
<span class='info'>Информация3</span>
<div class='main'>
<span class='info_show '>текст3</span>
</div>
</div>
</div>
</body>
</html>