我想使用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
});
答案 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
});
答案 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());
});