我是jQuery新手,所以如果我走错了方向,请给我建议。
我有一个函数以“ jQuery对象”作为参数,像这样:
function protectImageFromRightClick(image_object) {
// yeah ok i know this is only a dumb protection!!
image_object.bind('contextmenu', function(e) {
return false;
});
image_object.mousedown(function(){
return false; // for prevent drag
});
}
我想在选择时调用它。我试着用
each()
来称呼它:$( ".photo" ).each(function (i) {
protect(this);
});
但是
this
似乎是指没有任何.bind()
方法的DOM对象。.我不太清楚如何解决此问题。.有什么想法吗?面对的是,我在代码的其他地方使用了该功能,所以解决方案如下:
$('some selection').bind()
这不是一个好的解决方案,因为这样我只会写代码重复。
最佳答案
当您使用选择器调用jQuery函数时,它会执行一些任务。首先,它构造jQuery对象。然后,它将jQuery API附加到新构造的对象。然后,它构造一个与选择器匹配的DOM元素数组。
当在jQuery对象上使用each
时,或者在回调闭包内部时,this
关键字将引用jQuery正在处理的当前DOM元素。
简而言之,
$( ".photo" ).each(function (i) {
//this == the current element with class="photo"
//$(this) == a jquery object instanced with an
// array of elements containing only the
// current element with class="photo" that
// each is working with
});