首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery单击功能只工作一次(新情况)

jQuery单击功能只工作一次(新情况)
EN

Stack Overflow用户
提问于 2013-12-09 05:47:34
回答 4查看 3.8K关注 0票数 1

更新:链接到站点http://lucasvallim.com/previews/example/servicos.html

我需要删除div上每个.item_index li的所有id,然后将id #servico_ativo添加到单击的id中。

它只工作一次,其他单击只会将ID添加到单击的链接中,并且不再删除ID.

或者,如果可能的话,另一个解决方案是使用类而不是id。但是在这种情况下,我只需要从所有li项中删除类"servico_ativo“,然后将这个类添加到单击的项中。

id "servico_ativo“添加一个css,以获得字体粗体和用户单击的li项的背景。这很简单,但我还不太擅长jquery。

欢迎所有解决方案。

有什么建议吗?

代码语言:javascript
复制
$("a.click_assessoria").click(function(){ 

    $(".conteudo_dinamico").empty() 

    $.get('assessoria.html', function(result) {
        $('.conteudo_dinamico').append(result);
    });


    $(".item_index").removeAttr("id");

    $(this).attr('id', 'servico_ativo');



});

$("a.click_projeto").click(function(){ 

    $(".conteudo_dinamico").empty() 

    $.get('projeto.html', function(result) {
        $('.conteudo_dinamico').append(result);
    });

    $(".item_index").removeAttr("id");

    $(this).attr('id', 'servico_ativo');



});

$("a.click_instalacao").click(function(){ 

    $(".conteudo_dinamico").empty() 

    $.get('instalacao.html', function(result) {
        $('.conteudo_dinamico').append(result);
    });

    $(".item_index").removeAttr("id");

    $(this).attr('id', 'servico_ativo');



});
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-09 05:51:21

事实证明,这与事件委托无关,问题在于分配活动状态。

代码语言:javascript
复制
$(".item_index").removeAttr("id");
$(this).parent().attr('id', 'servico_ativo');

很少有改进可以应用于此。

  1. 使用data-*存储目标资源路径
  2. 使用名为active的类引用活动导航项

试一试

代码语言:javascript
复制
<a href="#" class="item_index click click_assessoria" data-target="assessoria.html">assessoria</a>
<a href="#" class="item_index click click_projeto" data-target="assessoria.html">assessoria</a>
<a href="#" class="item_index click click_instalacao" data-target="instalacao.html">instalacao</a>

然后

代码语言:javascript
复制
var $dinamico = $('.conteudo_dinamico');
$('a.click').on('click', function () {
    $dinamico.empty()
    $.get($(this).data('target'), function (result) {
        $dinamico.append(result);
        $(".item_index").removeClass("active");
        $(this).parent().addClass('servico_ativo');
    });
});
票数 2
EN

Stack Overflow用户

发布于 2013-12-09 05:56:11

使用On()而不是click()

代码语言:javascript
复制
$( "a.click_assessoria" ).on("click",function(){

$(".conteudo_dinamico").empty() 

$.get('assessoria.html', function(result) {
    $('.conteudo_dinamico').append(result);
    $(".item_index").removeAttr("id");

    $(this).attr('id', 'servico_ativo');
});

});


$( "a.click_projeto" ).on("click",function(){ 

$(".conteudo_dinamico").empty() 

$.get('projeto.html', function(result) {
    $('.conteudo_dinamico').append(result);
$(".item_index").removeAttr("id");

$(this).attr('id', 'servico_ativo');
});



});


$( "a.click_instalacao" ).on("click",function(){

$(".conteudo_dinamico").empty() 

$.get('instalacao.html', function(result) {
    $('.conteudo_dinamico').append(result);
 $(".item_index").removeAttr("id");

$(this).attr('id', 'servico_ativo');
});



});
票数 1
EN

Stack Overflow用户

发布于 2013-12-09 05:54:56

您将相同的id提供给多个HTML元素。id文档中的HTML应该始终是唯一的。

与设置元素的id不同,您可以为其分配一个class。与id不同,几个HTML元素可以具有相同的class

变化

$(this).attr('id', 'servico_ativo');

使用

$(this).addClass('servico_ativo');

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20463959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档