是否可以用jquery替换div元素并更新dom?

时间:2010-04-19 03:44:43

标签: jquery

嘿伙计们快速提问,我想用两个新div来更新div的内容来取代之前的div。每个新div都有一个唯一的id代替旧的div。然后,我希望任何进一步的更新使用新div的ID作为其值而不是原始值。这在Jquery有可能吗?提前感谢您的任何帮助。

var display_total = $(".display_total").attr("id");
var display_of_total = $(".display_of_total").attr("id");

var new_display_of_total = parseInt(display_of_total) + 1;
var new_display_total = parseInt(display_total) + 1;

$('.totalmessages').html('
    <div class="display_of_total" id="' + new_display_of_total + '">
        Displaying ' + new_display_of_total + ' of 
    </div>
    <div class="display_total" id="' + new_display_total + '">'
        + new_display_total + ' messages...
    </div>
');

(编者注:原始代码中没有换行符)

2 个答案:

答案 0 :(得分:3)

看起来你和你发布的内容差不多。什么不适合你?

我确实有几句友好的建议。

首先,根据w3schools,元素的id不仅仅是一个数字。 (Firefox似乎对数字ID很好。)

  

命名规则:

     
      
  • 必须以字母A-Z或a-z
  • 开头   
  • 可以跟着:字母(A-Za-z),数字(0-9),连字符
      (“ - ”),下划线(“_”),冒号
      (“:”)和句点(“。”)
  •   
  • 值区分大小写
  •   

如果需要是数字,则可以使用数据属性<div data-num="25"></div>。然后你可以像获取id一样访问它,只需将“data-num”换成“id”即可。 $('.display_total').attr('data-num')

其次,我会把它放在一个可以调用某个动作的函数中,并且你需要I then want any further update to use the ids of the new divs as their values instead of the original.

你的功能看起来像是:

function updateMessages(){
    var display_total=$(".display_total").attr("data-num");
    var display_of_total=$(".display_of_total").attr("data-num");

    var new_display_of_total=parseInt(display_of_total)+1;
    var new_display_total=parseInt(display_total)+1;

    $('.totalmessages').html('<div class="display_of_total" data-num="'+new_display_of_total+'">Displaying '+new_display_of_total+' of </div><div class="display_total" data-num="'+new_display_total+'">'+new_display_total+' messages...</div>');
}

您可以更新它,例如,在点击事件上更新它:

$('#click_me').click(function(){
   updateMessages();
});

答案 1 :(得分:1)

为什么不使用DOM操作方法?像这样:

var new_display_total= 1 + parseInt($(".display_total").attr("id"));
var new_display_of_total= 1 + parseInt($(".display_of_total").attr("id"));

$('.totalmessages').empty();

var new_total_element = $('.totalmessages').append('<div class="display_of_total" id="'+new_display_of_total+'">Displaying '+new_display_of_total+' of </div>"');

var new_display_of_total_element = $('.totalmessages').append('<div class="display_total" id="'+new_display_total+'">'+new_display_total+' messages...</div>''