更改单击的li元素的不透明度

时间:2014-02-10 10:22:12

标签: javascript jquery html

我需要更改clicked li元素的不透明度,所有li元素都具有相同的类

JSFIDDLE

HTML

<ul>
    <li><a href="#" class="someclass" selectedTeamId="1">test</a></li>
    <li><a href="#" class="someclass" selectedTeamId="2">test</a></li>
    <li><a href="#" class="someclass" selectedTeamId="3">test</a></li>
    <li><a href="#" class="someclass"selectedTeamId="4">test</a></li>
    <li ><a href="#" class="someclass"selectedTeamId="5">test</a></li>
</ul>



 $(".someclass:not('.removeTeamSelect')").live("click", function () {
    var teamId = $(this).attr("selectedTeamId");


    $(".someclass").each(function () {
tempId=$(this).attr("selectedTeamId");
        alert(tempId+"#"+teamId);
        if (tempId == teamId) {

            $(this).css({ "opacity": "1" });
        }
        else {
            $(this).css({"opacity":"0.1"});
        }
    });

});

我缺少什么?

2 个答案:

答案 0 :(得分:1)

我看到它更像是这样:

$('ul').on('click', ".horizontalTeams:not('.removeTeamSelect')", function() {
    $(".horizontalTeams").each(function () {
        $(this).css({"opacity":"0.1"});
    });
    $(this).css({"opacity":"1"});

});

正如我从您的代码中假设的那样,您将clicked元素的不透明度更改为1,将所有其他元素的不透明度更改为0.1?这段代码应该完全正确。

您应该使用 on 而不是 live live 已弃用, on 执行相同的工作。< / p>

你应该使用事件委托(参见代码)作为答案中提到的@jogesh_pi。

答案 1 :(得分:1)

看一下http://jsfiddle.net/jogesh_pi/apXfE/ 这只是一个如何在代码中实现它的示例:

HTML:

<ul>
    <li><a href="#" class="someclass">test</a></li>
    <li><a href="#" class="someclass notthis">test</a></li>
    <li><a href="#" class="someclass">test</a></li>
    <li><a href="#" class="someclass">test</a></li>
    <li ><a href="#" class="someclass notthis">test</a></li>
</ul>

JS:

$('ul').on('click', '.someclass:not(".notthis")', function(){
    alert('w');
});