Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用$按ID获取元素(此)_Javascript_Jquery_Jquery Animate_This - Fatal编程技术网

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));
});