2012-07-24 91 views
0

我有一个小问题,为了造型的目的我使用了一个定义列表而不是一个组合框,在我的dd标签内部,每个里面都有一个ul ,有一个跨度,具有值属性。我试图把这个值放在文本字段上,所以我可以在后期操作中使用它。此代码是我立的点击函数中:从jQuery的跨度值属性设置文本字段的值

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

我相信我的选择是正确的,因为当我登录临时的价值,这是一个我想要的,但是当我登录的CH字段的值,我得到未定义。

我错过了什么? 在此先感谢。

何塞。

回答

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

不过,如果你使用的时候是肯定temp具有正确的价值(甚至错误的方法),那么你可能没有达到你的目标,你确定这个元素有ID ch

+0

谁在正确的心态会给'span'元素赋一个'value'属性(根据你上次更新)? 'span'元素没有'value'属性,除非你自己在标记中定义它。 – 2012-07-24 00:48:09

+0

@FabrícioMatté - 谁知道,但问题确实表明'temp'变量应该包含正确的值? – adeneo 2012-07-24 00:49:36

+0

哦,我的坏,我错过了他声称在'temp'中获得正确值的部分。我的观点仍然存在,可以使用'数据'属性或其他更好的方法。这是OP的一些[参考](http://stackoverflow.com/q/992115/1331430),如果他正在创建自定义属性。 – 2012-07-24 00:51:37

1

只是要知道,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();