Javascript 无法使用$按ID获取元素(此)
我不知道为什么,但当我尝试运行此函数时:Javascript 无法使用$按ID获取元素(此),javascript,jquery,jquery-animate,this,Javascript,Jquery,Jquery Animate,This,我不知道为什么,但当我尝试运行此函数时: $(this).click(function(){ setArroPos($(this)); }); 其定义如下: function setArroPos($element){ var selector = $("#selector"); var primeiraPos = parseFloat($("#selector").css("left")) var leftOffSet = 0; var curent
$(this).click(function(){
setArroPos($(this));
});
其定义如下:
function setArroPos($element){
var selector = $("#selector");
var primeiraPos = parseFloat($("#selector").css("left"))
var leftOffSet = 0;
var curent = 0;
var newValue;
alert($element.attr("id"));
switch($element.attr("id")){
case '#tratamento-imagem':
newValue = primeiraPos;
break;
case '#portfolio':
leftOffSet = $("#portfolio").outerWidth(true);
curent = parseFloat(selector.css("left"));
newValue = leftOffSet+curent;
break;
case '#fotografia':
leftOffSet = $("#fotografia").outerWidth(true);
curent = parseFloat(selector.css("left"));
newValue = leftOffSet+curent;
break;
case '#montagem':
newValue = ($("#thumb-services").width()) - primeiraPos;
break;
}
selector.animate({left: newValue+'px'});
}
该警报为ID输出“未定义”。我要做的是获取我单击的任何元素的ID,然后与switch语句中的情况进行比较,以定义我的站点中的箭头应该走多远。我点击的所有元素都有一个ID,所以它不会给我“未定义”,因为我点击的是一个没有ID的元素
以下是相关的HTML:
<nav id="thumb-services">
<a id="tratamento-imagem" class="menu-item">
<div class="hover-menu">
<p class="menu-p"> Tratamento de Imagem </p>
</div>
</a>
<a id="portfolio" class="menu-item">
<div class="hover-menu">
<p class="menu-p"> Pós Produção </p>
</div>
</a>
<a id="fotografia" class="menu-item">
<div class="hover-menu">
<p class="menu-p"> Fotografia </p>
</div>
</a>
<a id="montagem" class="menu-item">
<div class="hover-menu">
<p class="menu-p"> Portifólio </p>
</div>
</a>
</nav>
<div id="main-info">
<div id="selector"></div>
<div id="panel">
<p id="teste">Hello world!</p>
</div>
</div>
图像处理
pós Produço
Fotografia
Portifólio
你好,世界
要使其正常工作,您可能需要更改:
$(this).click(function(){
setArroPos($(this));
});
致:
当前代码中的$(this)
很可能指的是窗口
对象,而该对象没有设置id属性
例如:
$(文档).ready(函数(){
$(“a.菜单项”)。单击(函数(){
setArroPos($(本));
});
});
函数setArroPos($element){
var选择器=$(“#选择器”);
var primeiraPos=parseFloat($(“#选择器”).css(“左”))
var-leftOffSet=0;
var-curent=0;
var新值;
警报($element.attr(“id”);
开关($element.attr(“id”)){
案例“#tratamento imagem”:
newValue=primeiraPos;
打破
案例“投资组合”:
leftOffSet=$(“#公文包”)。外径(真);
curent=parseFloat(selector.css(“左”);
新值=左偏移量+当前值;
打破
案例“#fotografia”:
leftOffSet=$(“#fotografia”)。外径(真);
curent=parseFloat(selector.css(“左”);
新值=左偏移量+当前值;
打破
案例“#montagem”:
newValue=($(“#thumb services”).width())-primeiraPos;
打破
}
动画({left:newValue+'px'});
}
图像处理
pós Produço
Fotografia
Portifólio
你好,世界
和$(此)在哪里。单击正在设置/调用的
?我们需要看看代码!为什么不将setArroPos
中的所有内容移动到click
事件的直接内部?确实,click setter中的$(此)
从何而来?得出该元素没有设置id的结论是相当简单的。在文档准备就绪时调用该元素,下面是代码:$(文档)。准备就绪(函数(){$(this)。单击(函数(){setArroPos($(this));});})代码>因为您刚刚向窗口添加了一个单击处理程序,而窗口没有id。谢谢Mouser,您是对的。。。现在它正在工作:)很高兴能为您服务。
$("a.menu-item").click(function(){
setArroPos($(this));
});