jquery中的图像宽度*高度(总大小大于40000)。那不在桌子里面

时间:2011-06-21 19:50:45

标签: jquery

$("img").load(function(){
  var width = $(this).width();
  var height = $(this).height();
    if (width * height > 40000) {

}});

我有这个代码,我想要突出显示大于40,000像素的图像,如果它不在表格内。我知道使用has()只能获得后代。会使用load(function()在这里不正确吗?

3 个答案:

答案 0 :(得分:1)

您可以查看其parents

if($(this).parents('table').length > 0) {/*in a table*/}

所以在你的代码中:

$("img").load(function () {
    var width = $(this).width();
    var height = $(this).height();
    if (width * height > 40000) {
        if ($(this).parents('table').length > 0) { 
           /* in a table */
        }
        else { 
           /* NOT in a table */
        }
    }
});

答案 1 :(得分:1)

我想您的问题是:“如何检测元素是否来自<table>的孩子?

如果是这样,你可以这样做:

if ( (width * height > 40000) && !($(this).closest('table').length) ) {
}

这将爬行DOM并检查父项列表中是否有任何<table>节点。如果该搜索不成功,则jQuery集为空,因此其长度为0。

答案 2 :(得分:1)

如果您只想选择元素,可以使用选择器:

$images = $('img:area(40000)').not('table *');

当然,你应该问,wtf是:area(40000)

你走了:

$.expr[':'].area = function(element, index, meta, stack){
  var $ele,
    size,
    area;
  $ele = $(element);
  size = parseInt( meta[3] );
  area = $ele.width() * $ele.height();
  return area > size;
};

稍等片刻,您可以扩展自定义选择器以获取第二个参数,以便您可以在>中使用<==:area(40000,lt)等风格语法。