【问题标题】:jquery change div textjquery更改div文本
【发布时间】:2010-11-09 08:16:25
【问题描述】:
'<div id="'+div_id+'" class="widget" style="height:60px;width:110px">\n\
            <div class="widget-head ui-widget-header" style="cursor:move;height:20px;width:130px">'+
         '<span id="'+span_id+'" style="float:right; cursor:pointer" class="dialog_link ui-icon ui-icon-newwin ui-icon-pencil"></span>'  +
          dialog_title+'</div></div>

我有一个使用上述字符串构造的 div。经过一些处理..我必须更改上面 div 中的 dialog_title 。我正在尝试使用以下代码进行操作

$('#'+div_id+' .widget-head').text("new dialog title");

虽然这会更改对话框标题..它会删除用于打开对话框的 span 元素。

我尝试使用带有新对话框标题的字符串的 replaceWith 方法..但是显示标题的 NaN 和跨度虽然可见但无法单击(是否禁用事件?)

如何在不丢失跨度和点击能力的情况下更改文本。

提前致谢。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    将标题放在自己的范围内。

    <span id="dialog_title_span">'+dialog_title+'</span>
    
    $('#dialog_title_span').text("new dialog title");
    

    【讨论】:

    • +1 更好的是,将标题放在标题标签中:$('#' + div_id + ' > h2').text('foo')'
    【解决方案2】:

    我认为这样可以:

    $('#'+div_id+' .widget-head > span').text("new dialog title");
    

    【讨论】:

    • 它不会因为他正在改变的文本不在span中
    • 谢谢..添加一个跨度并设置它的文本解决了这个问题。但我只能给出一个正确的答案:(
    【解决方案3】:

    最好和简单的方法是将标题放在一个跨度内然后替换。

    '<div id="'+div_id+'" class="widget" style="height:60px;width:110px">\n\
            <div class="widget-head ui-widget-header" 
                    style="cursor:move;height:20px;width:130px">'+
         '<span id="'+span_id+'" style="float:right; cursor:pointer" 
                class="dialog_link ui-icon ui-icon-newwin ui-icon-pencil"></span>' +
          '<span id="spTitle">'+
          dialog_title+ '</span>'
     '</div></div>
    

    现在你可以简单地使用这个了:

    $('#'+div_id+' .widget-head sp#spTitle').text("new dialog title");
    

    【讨论】:

    • 如果设置了 span 的 id 那么为什么会有一个长选择器。指定span的id还不够吗。
    • 谢谢..添加一个跨度并设置它的文本解决了这个问题。但我只能给出一个正确的答案:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多