【问题标题】:Set a text field's value from a span value attribute on JQuery从 JQuery 上的跨度值属性设置文本字段的值
【发布时间】:2012-07-24 00:43:37
【问题描述】:

我有一个小问题,出于样式目的,我使用定义列表而不是组合框,在我的 dd 标记内,有一个 ul,在每个 li 内,有一个跨度,有一个 value 属性。我正在尝试将该值放在文本字段中,以便可以在发布操作中使用它。这段代码在我的li的click函数里面:

var temp = $(this).find("span").attr("value");
$("#ch").val(temp);

我相信我的选择是正确的,因为当我记录 temp 的值时,它是我想要的值,但是当我记录 ch 字段的值时,我得到未定义。

我错过了什么? 提前致谢。

何塞。

【问题讨论】:

    标签: jquery html textfield


    【解决方案1】:
    $("#ch").val($(this).find("span").text());
    

    但是,如果您确定 temp 具有正确的值(即使使用错误的方法),那么您可能没有达到目标,您确定元素的 ID 为 ch 吗?

    【讨论】:

    • 谁会为span 元素赋予value 属性(根据您的上次更新)? span 元素没有 value 属性,除非您自己在标记中定义它。
    • @FabrícioMatté - 谁知道,但问题确实表明 temp 变量应该包含正确的值?
    • 哦,我的错,我错过了他所说的在temp 中获得正确价值的部分。我的观点仍然存在,可以使用data- 属性或其他数百种更好的方法。如果他正在创建自定义属性,这里有一些 reference 供 OP 使用。
    • @FabrícioMatté - 我同意你的观点,我不得不四次阅读这个问题才能真正看到它实际上表明 temp 值是正确的,所以留下第二行,除了选择器之外,那里没有什么问题?
    • 是的,或者可能,#ch 不是 input 元素,因此没有要使用 .val() 设置的 value 属性?例如,如果#chspan,则应使用$('#ch').html(temp)$('#ch').text(temp)
    【解决方案2】:

    要知道,span 元素没有 value 属性,除非您自己在标记中定义它。


    实现您想要的可能方法:

    使用这个:

    $('#ch').val($(this).find('span').html());
    

    或者:

    $('#ch').val($(this).find('span').text());
    

    在这里面:

    $(selector).on('click', function() {
       $('#ch').val($(this).find('span').text());
    });
    

    undefined 问题的可能解决方案:

    • 确保为要设置值的元素使用正确的 ID。
    • 可能您的元素#ch 在DOM 中,因此您需要使用.on() 作为上面的示例,而不仅仅是$(selector).click();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 2017-08-26
      • 1970-01-01
      • 2015-03-27
      相关资源
      最近更新 更多