Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有一种方法可以通过它的css';左';和';顶部';属性?_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 有没有一种方法可以通过它的css';左';和';顶部';属性?

Javascript 有没有一种方法可以通过它的css';左';和';顶部';属性?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个如下所示的div列表: <div class="blockattribute" id="1" style="background-color: rgb(217, 217, 217); left: 0px; top: 0px;"></div> 我认为这很接近,但我得到了以下错误: jquery.min.js:2 Uncaught Error: Syntax error, unrecognized expression: div['style=left: 0px;

我有一个如下所示的div列表:

<div class="blockattribute" id="1" style="background-color: rgb(217, 217, 217); left: 0px; top: 0px;"></div>
我认为这很接近,但我得到了以下错误:

jquery.min.js:2 Uncaught Error: Syntax error, unrecognized expression: div['style=left: 0px; top:0px;']

比如说:

$(".blockattribute").filter(function(ind,el){return $(el).offset().left == your_value && $(el).offset().top == your_value})
$(".blockattribute").filter(function(ind,el){return $(el).css("left") == your_value+"px" && $(el).css("top") == your_value2+"px"})
或者,如果您打算使用css值,可以执行以下操作:

$(".blockattribute").filter(function(ind,el){return $(el).offset().left == your_value && $(el).offset().top == your_value})
$(".blockattribute").filter(function(ind,el){return $(el).css("left") == your_value+"px" && $(el).css("top") == your_value2+"px"})

你选错了。实现这一点的一种方法是迭代
divs
,并检查其
left
top

$(函数(){
var selectDiv=函数(左,上){
var$arrDiv=[];
$('div.blockattribute')。每个(函数(i,v){
变量$div=$(v);
$arrDiv.push($div);
});
对于(变量i=0;i<$arrDiv.length;i++){
var$div=$arrDiv[i];
变量偏移量=$div.offset();
if(offset.left==left&&offset.top==top){
返回$div;
}
}
返回null;
}
var$selectedDiv=selectDiv(20,20);
log($selectedDiv.attr('id'));
});
.blockattribute{
宽度:20px;
高度:20px;
显示:块;
位置:绝对位置;
}

首先,您的代码
$(“div['style=left:0px;top:0px;'])在语法上无效。它需要在属性值周围加引号,如下所示:

$('div[style="left: 0px; top:0px;"]');
也就是说,它仍然不能得到您想要的结果,因为您的内联样式必须完全匹配

为了更进一步,您可以使用通配符属性选择器来获得这样的内联样式的一部分,尽管它确实会非常挑剔,甚至一个空格都会导致失败

$('div[style*=“left:0px;top:0px”]).html('test345')


test 123
看看是否有帮助..嘿@choz,谢谢你的链接,但这不是我想要的。我能够从该方法获得信息,结果是:
block1[0].getBoundingClientRect()
ClientRect{top:8,right:306,bottom:28,left:286,width:20…}
这不是我想要的,因为当我想找到相邻的正方形(right,left,top,bottom)时我希望能够将像素添加到左侧,并从中获取元素。我已经添加了我的答案,但我建议使用Evan的答案,使用
过滤器
功能,因为我认为它更干净。实际上它看起来应该可以工作,但如果
左侧
顶部
之间有什么东西呢声明?我用
blockattribute
替换了div,我让它开始工作了。@KodosJohnson-在这种情况下,这将失败。正如我所说,这将是非常挑剔和不稳定的。另一方面,如果你的风格非常可预测,它仍然可以工作。嘿,埃文,我喜欢你的答案,但对于
你的_值
部分,我尝试放置一个样本坐标,如
20
0
,我得到了一个空数组。我还尝试了
20px
和'0px',但仍然一无所获。我遗漏了什么吗?
.offset().top
.offset().left
计算相对于文档的坐标。我认为最好使用
.css('top')
.css('left')
。由于OP询问的是顶部和左侧的css属性值。@KodosJohnson个人认为,我宁愿使用
offset()
而不是
css
。由于jquery是通过使用
getBoundingClientRect
实现的,我认为这是基于@DanRubio偏移量相对于页面的正确方法,如果需要css值,请按照KodosJohnson的建议使用.css()