jQuery 中一个常见的学习错误是专注于所有类型选择器的 ID。它们适用于非常少量的元素,但对于可以通过更简单的代码方法轻松管理的大量元素,它们变得非常笨拙。
您希望能够编写更通用的代码,其中一个处理程序将覆盖页面中共享相同功能的所有链接。
例子:
var $mainImage=$('#mainImage')
var $buildingLinks=$('.buildingliststyle a').click(function(){
/* "this" is the link clicked*/
/* get index of this link in the whole collection of links*/
var index=$buildingLinks.index(this);
/* perhaps all the image urls are stored in an array*/
var imgUrl= imagesArray( index);
/* perhaps the image urls are stored in data attribute of link( easy to manage when link created server side)*/
var imgUrl=$(this).data('image');
/* store the current image on display (not clear how page is supposed to work)*/
var currImage=$mainImage.attr('src');
$mainImage.data('lastImage', currImage);/* can use this to reset in other parts of code*/
/* nw update main image*/
$mainImage.attr('src', imgUrl);
/* load ajax content for this link*/
$('#ajaxContainer').load( $(this).attr('href') );
/* avoid browser following link*/
return false;
});
/* button to reset main image from data we already stored*/
$('#imageResetButton').click(function(){
$mainImage.attr('src', $mainImage.data('lastImage') );
})
可以看到,通过在一个处理程序中处理一组元素可以用很少的代码做很多事情,而无需专注于 ID
上面的代码提到了可能将图像 url 存储在 data 属性中,例如:
<a href="ajaxUrl?id=345" data-buildingID="345" data-image="imageUrl-345">Building name</a>