首先看下一下代码:

function contactsSel() {
	var that = $(this);
	var checkbox = that.find('input[type="checkbox"]');
	if (checkbox.prop('checked') == true) {
		that.css('background', '#ffffff');
		checkbox.prop('checked', false);
	} else {
		that.css('background', '#9ecaf0');
		checkbox.prop('checked', true);
	}
}

$("._contactsContainer li").on('click', contactsSel);

这样的效果会在单击li时候整个li的背景替换,并选中checkbox,看似完美,但是实际效果中会发现一个bug:
单击li没什么问题,单击checkbox时候,没有任何反应。why?
究其原因为checkbox单击时候事件传递给了li,单击checkbox选中了它,然后传递给li后执行contactSel,看到checkbox被选中就会取消选中。结果就是没单击一样。
fix方法:加checkbox单击事件

$("._contactsContainer input[name=\"em\"]").on('click', function () {
	var that = $(this);
	that.prop('checked', !that.prop('checked'));
});