2013-12-20 69 views
2

我被困在一段代碼中,它調用一個jQuery模塊填充表格行id。我約90%確定這個錯誤在我的jQuery代碼中。一旦我點擊按鈕(class =「view」),我會得到一個未定義的值,而不是行IDTable Row attr()問題

感謝您的幫助! 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')); 
}); 

回答

1

因爲你selction不正確。使用closest可以進入單擊按鈕父行(tr)。使用語法$('tr', this)您試圖找到tr,它是.view按鈕的後代,這是不正確的。你需要向上去tr。處理程序中的this將是button

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

就是這樣!似乎每次我在StackOverflow上問一個問題時,最終都必須等待10分鐘才能接受答案;)你們真棒! –

+0

@WillDavis歡迎您... – PSL

1

您正在查找的行trbuttonbutton後裔是tr行的後裔。您可能需要closest()才能獲得祖先行,以獲得類別爲view的按鈕的父行。

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

你不能找到this範圍內tr,因爲TR是在你的情況下,源按鈕的祖先。所以你必須使用.closest()來達到預期的結果。

嘗試,

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

當它涉及到桌子的有點棘手。

您想要選擇類「視圖」的整個路徑的第一行。我不知道你的確切路徑,但它應該是這樣的。

$( 「#lead_wrapper_a」)對( '點擊', '「#lead_wrapper_a> TABLE> TBODY> TR> td.view',函數(){

});

希望這有助於