$("img").load(function(){
var width = $(this).width();
var height = $(this).height();
if (width * height > 40000) {
}});
我有这个代码,我想要突出显示大于40,000像素的图像,如果它不在表格内。我知道使用has()只能获得后代。会使用load(function()在这里不正确吗?
答案 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)
等风格语法。