$(这个)不适用于javascript创建的元素?
我不明白为什么我的脚本不能工作。以下是简单的表格:$(这个)不适用于javascript创建的元素?,javascript,jquery,Javascript,Jquery,我不明白为什么我的脚本不能工作。以下是简单的表格: <table> <tr> <th>Name</th> <td>Paul Stevenson</td> </tr> <tr> <th>Date</th> <td>28. 09. 1978</td> </tr> </table>
<table>
<tr>
<th>Name</th>
<td>Paul Stevenson</td>
</tr>
<tr>
<th>Date</th>
<td>28. 09. 1978</td>
</tr>
</table>
为什么是我的变量
var thisNext = $(this).parent().next().text();
不获取td文本并且不将其添加到链接
您还可以看到,您试图在处理程序外部使用
此
,因此此
未设置为您认为的设置。内部$('th')。在(“mouseenter mouseleave”)上,函数(e){
此
指正在执行的th
——在您的示例中,您只是尝试访问此
,并假设它指的是您想要的。当您在函数内部执行$(此)时
$('th').on("mouseenter mouseleave", function(e) {
然后$(this)指向th元素,但是当您访问$(this)以获取文本时
var thisNext = $(this).parent().next().text();
它在函数之外,这里$(this)指向窗口对象
如果您需要在此处使用适当的选择器选择文本,请在此处查看更多信息
这是您尝试实现的更新代码
$('th').on("mouseenter mouseleave", function(e) {
if (e.type === 'mouseenter') {
var toolbar = $("<div />").css({
"padding": "5px",
"background" : "#F8F8F8",
"position" : "absolute",
"borderRadius" : "5px 0 5px 5px",
"left" : "-30px",
"top" : "0",
"zIndex" : "99"
});
var link = $("<a />").css({
"display" : "block",
"height" : "20px",
"width" : "20px",
"marginBottom" : "5px",
"background-size" : "100%",
"position" : "relative"}).attr({
"target" : "_blank"
});
var thisNext = $($(this).parent().children('td')[0]).text();
var gmaps = link.clone().css({"background" : "red"}).attr({
href: 'https://www.google.cz/search?q=' + thisNext });
toolbar.append( gmaps );
$(this).append( toolbar ); }
else
{
$(this).children('div').remove();
}
});
$('th')。在(“mouseenter mouseleave”,函数(e)上{
如果(e.type==='mouseenter'){
变量工具栏=$(“”)。css({
“填充”:“5px”,
“背景”:“f8”,
“位置”:“绝对”,
“边界半径”:“5px 0 5px 5px”,
“左”:“-30px”,
“顶部”:“0”,
“zIndex”:“99”
});
变量链接=$(“
希望这能对您有所帮助。您到底想做什么?var thisNext=…
不在事件处理程序中。this
是Window
编写它的地方。所以我应该把它做成$('th')。on(“mouseenter mouseleave”,函数(e){var thisNext=$(this.parent().next().text();如果(e.type=='mouseenter'){$(this).append(toolbar);}else{$(this).find($('div”).remove()});toolbar然后不要追加。检查上面更新的答案我对你的函数做了一些更改。希望这对你有用。所以我应该做这个?$('th')。在(“mouseenter mouseleave”,函数(e){var thisNext=$(this)。父().next().text();if(e.type=='mouseenter'){$(this.append(toolbar);}else{$(this.find($('div”)).remove()});toolbar不追加。
var thisNext = $(this).parent().next().text();
$('th').on("mouseenter mouseleave", function(e) {
if (e.type === 'mouseenter') {
var toolbar = $("<div />").css({
"padding": "5px",
"background" : "#F8F8F8",
"position" : "absolute",
"borderRadius" : "5px 0 5px 5px",
"left" : "-30px",
"top" : "0",
"zIndex" : "99"
});
var link = $("<a />").css({
"display" : "block",
"height" : "20px",
"width" : "20px",
"marginBottom" : "5px",
"background-size" : "100%",
"position" : "relative"}).attr({
"target" : "_blank"
});
var thisNext = $($(this).parent().children('td')[0]).text();
var gmaps = link.clone().css({"background" : "red"}).attr({
href: 'https://www.google.cz/search?q=' + thisNext });
toolbar.append( gmaps );
$(this).append( toolbar ); }
else
{
$(this).children('div').remove();
}
});