Jquery - 在

时间:2015-10-22 14:00:41

标签: javascript jquery css

我有代码:

$('#.element').on('click', function(e) {
    $(this).after('<div>...</div>');
});

我想在同一行代码中使用创建的div执行其他一些操作而不使用其ID。我怎么能这样做?

我的意思是这样的:

$(this).after('<div>...</div>').css('border', '1px').fadeOut('5000');

以上代码会将borderfadeOut设置为元素$(this),但我希望将其添加到新创建的div元素中。

4 个答案:

答案 0 :(得分:3)

这就是引入.insertAfter()的原因,它将以相反的方式返回对象。

$('<div>...</div>').css('border', '1px').insertAfter($(this)).fadeOut('5000');

答案 1 :(得分:1)

您可以使用insertAfter。它与after的作用相同,但返回的值是插入的对象。所以你可以对它进行链接。

$('<div/>').insertAfter($(this)).css('border', '1px').fadeOut('5000');

答案 2 :(得分:1)

由于after()会返回应用after()的原始元素/集合,而不是已插入的已创建元素,因此只需使用next()

$(this).after('<div>...</div>').next().css('border', '1px').fadeOut('5000');

或者你可以使用insertAfter()并在创建元素时应用方法:

$('<div />', {
    'css' : {
        'border' : '1px'
     }).insertAfter(this).fadeOut();
或者,或者,你甚至可以创建一个替代的jQuery方法 - 作为一个插件 - 它采用after()的功能,而是返回创建的元素;如:

(function ($) {
    $.fn.afterAlt = function (str) {
        this.after(str);
        return this.next();
    };
})(jQuery);

snippet.log($('.demo').afterAlt('<span>hi</span>').map(function(){
  return this.tagName;
}).get());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<div class="demo">div 1</div>
<div class="demo">div 2</div>
<div class="demo">div 3</div>
<div class="demo">div 4</div>

JS Fiddle demo

答案 3 :(得分:1)

def request(self):
    try:
        request = requests.post(url=self.url, headers=self.headers,
                                data=self.data, timeout=self.timeout,
                                verify=False)
            ...