我有代码:
$('#.element').on('click', function(e) {
$(this).after('<div>...</div>');
});
我想在同一行代码中使用创建的div
执行其他一些操作而不使用其ID
。我怎么能这样做?
我的意思是这样的:
$(this).after('<div>...</div>').css('border', '1px').fadeOut('5000');
以上代码会将border
和fadeOut
设置为元素$(this)
,但我希望将其添加到新创建的div
元素中。
答案 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>
答案 3 :(得分:1)
def request(self):
try:
request = requests.post(url=self.url, headers=self.headers,
data=self.data, timeout=self.timeout,
verify=False)
...