$('ul#test a').click(function(){
$('this').closest('parent').find('textarea').val(this.getAttribute('href'));
});
适用于Google Chrome
代码段,但未加载Tampermonkey
我认为它甚至试图在找到目标之前设置一个值
(编辑) 整个剧本:
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match www.reddit.com/r/some-subreddit
// @grant none
// ==/UserScript==
(function() {
'use strict';
$( "textarea" ).one("click",(function() {
$(".usertext-edit").prepend ( `
<div id="gmSomeID"><ul id="gmSomeeID"><a href="#stickers1"</a> <a href="#stickers2"</a> <a href="#stickers3"</a> <a href="#stickers4"</a> <a href="#stickers5"</a ><a href="#stickers6"</a> <a href="#stickers7"</a> <a href="#stickers1"</a> <a href="#stickers2"</a> <a href="#stickers3"</a> <a href="#stickers4"</a> <a href="#stickers5"</a> <a href="#stickers6"</a>
</ul></div>
` );
$('ul#gmSomeeID').css({
'overflow-y':'scroll',
'display':'block',
'overflow-wrap' : 'normal',
'height':'100px',
'background-color':'white'
});
$('ul#gmSomeeID a').click(function(){
$("this").closest("div.usertext-edit")
.find("textarea")
.val($("this")
.closest("div.usertext-edit")
.find("textarea")
.val() +' '+ '[](' + this.getAttribute('href') + ') ');
});
}));
})();
它会在textarea上面显示一些图片,我试图让它们在点击时将它们插入到所述文本区域中
答案 0 :(得分:1)
将代码放在ready
函数中,这样事件就会在选择器中找到元素,因为它将在DOM完全加载后执行:
$(function(){
//Your code here
})
还要尝试事件委派:
$(function(){
$('body').on('click', '#test a', function(){
$(this).closest('parent').find('textarea').val( $(this).attr('href') );
});
});
注1:代码在控制台中有效,因为DOM已完全加载。
注2: $('this')
应为$(this)
而不是&amp;最好使用$(this).attr('href')
而不是this.getAttribute('href')
。
希望这有帮助。
答案 1 :(得分:0)
当你在控制台中尝试代码时,DOM已经完成了构建。如果你已经显示了代码,那么在文件中的所有HTML之前,它将尝试在元素被解析到内存之前找到元素。
将代码放在document.ready handler:
中$(function(){
$('ul#test a').click(function(){
$('this').closest('parent').find('textarea').val(this.getAttribute('href'));
});
});