表行attr()问题

时间:2013-12-20 17:55:55

标签: php jquery mysql

我坚持使用一段代码来调用填充了表格行id的jQuery模块。我大约90%确定错误在我的jQuery代码中。一旦我点击按钮(class =“view”),我得到一个未定义的值而不是行ID

感谢您的帮助!

leads_queue_a.php的相关部分:

<section class="main">
     <h1>Lead Queue - Assigned Leads</h1>
     <div id="lead_wrapper_a"></div>
</section>

fill_leads_a.php:

$cond = array();
$params = array();

if ($_POST['id'] == '') {
    return;
}

if (isset($_POST['id']) && $_POST['id'] != '') {
    $userID = $_POST['id'];
}
if (!empty($userID)) {
    $cond[] = '`users`.`id` = ?';
    $params[] = "$userID";
}

$query = "SELECT `leads`.`id`, `leads`.`fname`, `leads`.`lname`, `leads`.`lead_type`, `leads`.`addr_street`, `leads`.`addr_city`, `leads`.`addr_zip`, `leads`.`phone`, `leads`.`phone_alt`, `leads`.`note`, `leads`.`created_by`, `leads`.`created` FROM `leads`,`users`,`leads_assignment`";

if (count($cond)) {
    $query .= ' WHERE ' . implode(' AND ', $cond);
}
$query .= ' AND `leads`.`id` = `leads_assignment`.`id_lead`'
        . ' AND `users`.`id` = `leads_assignment`.`id_user`';


$stmt = $db->prepare($query);
$stmt->execute($params);

//TABLE BUILDER
$lead = '';
$lead .= '<div class="leads">';
$lead .= '<table class="lead_table">';
$lead .= '<tr>';
$lead .= '<td>Customer</td>';
$lead .= '<td>Phone</td>';
$lead .= '<td>Lead Type</td>';
$lead .= '<td>Status</td>';
$lead .= '<td>Operations</td>';
$lead .= '</tr>';

foreach ($stmt->fetchAll(PDO::FETCH_OBJ) as $row) {
    $id = $row->id;
    $status = get_statusLast($id);
    $fname = $row->fname;
    $lname = $row->lname;
    $lead_type = $row->lead_type;
    $addr_street = $row->addr_street;
    $addr_city = $row->addr_city;
    $addr_zip = $row->addr_zip;
    $phone = $row->phone;
    $phone_alt = $row->phone_alt;
    $note = $row->note;
    $created_by = $row->created_by;
    $created = $row->created;

    $lead .= "<tr id='$id'>";
    $lead .= '<td>' . $fname . ' ' . $lname . '<br />' . $addr_street . '<br />' . $addr_city . ' ' . $addr_zip . '</td>';
    $lead .= '<td>' . $phone . '<br />' . $phone_alt . '</td>';
    $lead .= '<td>' . $lead_type . '</td>';
    $lead .= '<td>' . $status . '</td>';
    $lead .= '<td><button type="button" class="view" name="view">View Notes</button><br />'
            . '<button type="button" class="update" name="update">Update Status</button></td>';
}
$lead .= '</table>';
$lead .= '</div>';
$db = null;
print $lead;

modul.js的相关部分:

$("#lead_wrapper_a").on('click', '.view', function() {
      alert($('tr', this).attr('id'));
});

4 个答案:

答案 0 :(得分:1)

因为你的选择不正确。使用 closest 转到单击的按钮父行(tr)。使用语法$('tr', this),您尝试查找作为按钮tr的后代的.view,这是不正确的。你需要向上走到tr。处理程序中的this将是button

alert($(this).closest('tr').attr('id'));

答案 1 :(得分:1)

您正在尝试搜索tr后代中的行button,但button是行tr的后代。您可能需要closest()来获取祖先行,以获取具有类view的按钮的父行。

$("#lead_wrapper_a").on('click', '.view', function() {
      alert($(this).closest('tr').attr('id'));
});

答案 2 :(得分:1)

您无法在tr的上下文中找到this,因为tr是您案例中源按钮的祖先。因此,您必须使用.closest()来获得所需的结果。

尝试,

$("#lead_wrapper_a").on('click', '.view', function() {
      $( "#dialog_view" ).dialog( "open" );
      alert($(this).closest('tr').attr('id'));
});

答案 3 :(得分:0)

说到桌子有点棘手。

为您的第一行选择“视图”类的整个路径。我不知道你的确切路径,但它应该像这样。

$(“#lead_wrapper_a”)。on('click','“#list_wrapper_a&gt; table&gt; tbody&gt; tr&gt; td.view',function(){

});

希望这有帮助