本文只是记录了我在项目用到的jQuery选择器及方法。
jQuery.closest(selector)
返回"最接近”selector的一个元素。查找过程如下:对jQuery对象中每个DOM元素,从这个元素开始找起,然后找它的parentNode,再找它的parentNode的parentNode,一直找到它的第一个匹配selector的元素。当页面中有一个列表,列表中每个元素都有事件要处理时,会经常用到这个方法。
<table>
<tr class="item">
<td>... item description ...</td>
<td>
<a href="#" class="edit-link">Edit</a>
<a href="#" class="delete-link">Delete</a>
</td>
</tr>
<tr class="item">
....
</tr>
...
</table>
对于上面的HTML,需要处理Edit, Delete链接的事件,对Delete链接事件处理可能是这样的:
<script> $('.delete-link').click(function(e) { if (confirm('Are you sure to delete this item?')) { $(this).closest('.item').remove(); } } </script>
jQuery.add(selector)
将两个jQuery对象中的DOM元素合并,相当于对两个集合取并集。有时可能需要对多个元素应用同样的事件处理器,这时可以这样做:
$('add-item').add('edit-item').click(function(e) { // do something... })
:Visible
jQuery的选择过滤器,只选择可见的元素。如果页面有一个选择所有或取消选择所有元素的check box时,它选择或取消的应该是可见的元素,可以这样写:
$("input#select-all[type=checkbox]").click(function(e) { if (this.checked) $('input.item-checkbox').attr('checked', 'checked'); else $('input.item-checkbox').attr('checked', ''); })
判断一个元素是不是可见,可用:
var elems = $('...'); var anyVisible = elems.is(':visible'); // 任何一个元素可见 var allVisible = elems.not(':visible').length == 0; // 所有元素可见