jQuery迭代所有固定元素

时间:2017-10-25 09:50:26

标签: javascript jquery

我需要"移动" jQuery中的所有固定元素。这就是我试过的:

jQuery('body *').each(function(){
    var $this = jQuery(this);
    if ($this.attr('position') !== undefined)
    {
        $this.css('margin-top', 50);
    }
});

但不幸的是它不起作用,$this.attr('position')总是undefined。但它是在一些元素上设定的。 (来自CSS,不是内联)

3 个答案:

答案 0 :(得分:4)

首先position是CSS属性,而不是HTML属性,因此attr()无法使用它。其次,CSS属性永远不会undefined。它们始终具有默认值,但它从您的问题标题中看出您想要'fixed'元素:

$('body *').filter(function() {
  return $(this).css('position') === 'fixed';
}).css('margin-top', '50px');
然而,应该指出的是,这远非理想的解决方案。我强烈建议在要修改的元素上添加一个类或其他标识符,然后向class添加一个margin-top来设置jQuery('body *').each(function(){ var $this = jQuery(this); if ($this.css('position') !== undefined) { $this.css('margin-top', 50); } });

答案 1 :(得分:3)

你应该使用jquery的.css() style property来检查这个。

      // Send message and  store the future
      Future<RecordMetadata> messageFuture = producer.send(new ProducerRecord<String, byte[]>(topic,  serialize(currentMessage)));

      producer.flush();
      // as flush blocks until all operations have been completed (regardless of success or failure) we can be sure
      // that our future is available at this point

      try {
        RecordMetadata metaData = messageFuture.get(); 
        System.out.println("Sent message with offset: " + metaData.offset());
      } catch (Exception e) {
        // do some error handling
      }

答案 2 :(得分:3)

您只需*即可迭代所有文档元素 要获取css的值,您需要在css()中使用if方法来检查property的值而不是attr。我为你做了一个工作的例子,希望它有所帮助:

$('*').each(function(){
    if ($(this).css('position') == "fixed"){
        $(this).css('margin-top', 50);
        $(this).css('color', "red");
    }
});
.a{
   position:fixed;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span>My test 1</span>
<span>My test 2 </span>
<span class="a">My test 3 </span>
<span>My test 4</span>
<span>My test 5</span>
<span class="a">My test 6</span>
<span>My test 7</span>