我在一个文件中有这样的代码......
$d = new db();
class db
{
function fetchform()
{
global $wpdb;
$content='';
$result = $wpdb->get_results("select * from kp_contact_form",ARRAY_A);
$path =plugins_url().'/kp_contactus/ajax.php';
$content.='<form action="'.$path.'" method="POST">';
$content.= '<table><span id="error"></span>';
foreach ($result as $row )
{
$content.='<tr><td><label>'.$row['label'].'</label> </td>
<td><input type="'.$row['type'].'" name="'.$row['name'].'" required> </td>
<td><a href="#" id="'.$row['fid'].'" class="remove">Remove</a></td>';
}
echo $content;
}
}
这里我打印的功能数据
<div id="showform" style="margin-top: -100px">
<?php $d->fetchform(); ?>
</div>
现在我想获取输入类型的名称属性
$(".remove").click(function(){
alert("hii");
var fid=$(this).prev().attr('name');
alert(fid); // giving undefined
}
当我正在做警告时,我正在未定义 ...我不知道我的代码出了什么问题..
任何人都可以帮助我
提前致谢
答案 0 :(得分:2)
.remove
的前一个元素是......什么都没有!这是因为.remove
是td
中的第一个元素。你需要抓住父元素,它的前一个兄弟,最后是输入元素:
var fid = $(this).parent().prev().find("input").attr('name');
答案 1 :(得分:2)
它不起作用,因为a
位于td
内,因此没有兄弟姐妹。你能做的是:
$(this).closest('td').prev().find('input').attr('name');
这会选择最近的td
父级,选择之前的td
,然后选择其中的input
。
澄清:
我选择了closest()
而不是parent()
,因为如果您恰好将a
包裹在closest()
之后的另一个元素中,那么它仍然有效。
答案 2 :(得分:0)
这是删除链接,它是td的唯一子节点,所以没有prev(),试试这个:
$(this).closest('tr').find('input').attr('name')