jquery如何在span元素中获取文本框值

时间:2011-07-09 08:05:30

标签: jquery textfield html

我想使用jquery在span元素中获取textfield(只有一个)的值但不能。

<span>simple span text
<a class="remove" href="javascript:" title="Remove">x</a>
<input type="hidden" name="word[ids][]" value="this is text">
</span>

删除锚标记的

相关联的Jquery代码
$(".remove").live("click", function(){

alert ($(this).parent().('input:text').val()); // return undefined

//i just coded below to check whether span itself is getting or not
alert ($(this).parent().attr('tag')); // this also return undefined 

if ($(this).parent().is('span'));
alert("parent is span"); // only this works 

}); 

6 个答案:

答案 0 :(得分:3)

如果input始终是remove元素的下一个兄弟,那么这将有效:

$(".remove").live("click", function(){
    var value = $(this).next().val();
}); 

解释您的代码无效的原因:

这一行$(this).parent().('input:text').val()在语法上和逻辑上都是错误的。

如果您想在另一个元素中找到元素,则必须使用find [docs]

$(this).parent().find('input:text').val()

这仍然不会为您提供值,因为您有隐藏 input元素。如果您查看:text [docs] documentation,您会看到此选择器因此不会选择它们。因此,只需使用'input'或使用:hidden [docs]'input:hidden'

.attr('tag')根本不起作用,因为HTML元素没有属性标记。您可以使用nodeName属性从DOM元素中获取标记名称:

$(this).parent()[0].nodeName

答案 1 :(得分:2)

这样做:

 $(".remove").live("click", function() {
    //alert($(this).parent().attr('tagName')); //return the tagName
    alert($(this).parent().find('input').val()); //this works
});

在此处测试http://jsfiddle.net/zhiyelee/29bgX/

答案 2 :(得分:0)

试试这个:

$(".remove").live("click", function() {
    alert ($(this).parent().find("input").val());
});

答案 3 :(得分:0)

这不起作用:

$(this).parent().('input:text').val()

相反,您需要使用find功能。另一个问题是您正在寻找文本输入,但输入的类型为hidden

$(this).parent().find('input:hidden').val()

单独注意,您的最终alert将始终收到提醒,无论父母是span还是if,因为您的{{1}}末尾有一个分号言。

答案 4 :(得分:0)

有了这个:

$(".remove").live("click", function() {
    alert ($(this).closest("span").find("input[type='hidden']").val());
});

这将在最近的span前导内找到,因此HTML代码更改会更灵活。

希望这会有所帮助。干杯

答案 5 :(得分:0)

$('.remove').live('click',
function() {
    console.log($(this).next('input:hidden').val());
});