2015-06-16 4 views
-1

Я пытаюсь получить первое значение строки в моем HTML таблицы, когда я нажимаю на каждой кнопке удаления ...JAVASCRIPT/Jquery получить значение первой строки

Таблица заполняется из базы данных SQL ...

изображение ниже!

вложу только необходимый код:

enter image description here

HTML Button:

<button type="button" class="btn btn-danger btn_delete" id="btn_delete" onclick="delete_function()">Delete</button> 

Javascript Код:

<script type="text/javascript"> 
    function delete_function() { 
     var id = $('#clients tbody').find('td:first').text(); 
     alert(id);  
    } 
</script> 

Если я нажимаю на любую кнопку, я всегда получаю предупреждение с таким же результатом:

Как я могу получить то же значение номера id, которое существует в одной строке нажатой кнопки ??? Я принимаю Javascript и Jquery советы

+1

Вы не можете использовать тот же идентификатор на каждой кнопке. – Leeish

+0

Кроме того, если вы выводите эту информацию на серверный язык, просто добавьте идентификатор на кнопку с идентификатором 'data-id = 114', а затем вы можете легко получить его с помощью' $ ('.btn_delete'). Data (' id ') ' – Leeish

ответ

2

Изменить код:

<button type="button" class="btn btn-danger btn_delete" id="btn_delete" onclick="delete_function(this)">Delete</button> 

Использование first-child

<script type="text/javascript"> 
    function delete_function(obj) { 
     var id = $(obj).closest('tr').find('td:first-child').text(); 
     alert(id);  
    } 
</script> 

Одна вещь, говоря: вы не должны использовать OnClick в HTML:

$(".btn_delete").on('click',function(){ 
    var id = $(this).closest('tr').find('td:first-child').text(); 
    alert(id); 

}); 
+2

Я думаю, что он все равно всегда будет возвращать то же значение. Он получает первый дочерний элемент родительского элемента. Ему нужно пройти от кнопки вверх. – Leeish

+0

@ Leeish no. вы отправляете 'this' в' delete_function (this) ' –

+0

Это не то, что изначально был ваш код. Ваш первоначальный ответ привел к 114 каждый раз. – Leeish

1
$('.btn_delete').click(function(){ 
    var id = $(this).parents('tr').find('td:first-child').text(); 
    alert(id); 
} 

onClick - это всегда плохая идея.

jQuery.click() vs onClick

Why is using onClick() in HTML a bad practice?

+1

Я предлагаю вам использовать 'ближайший', а не' родители' –

+0

Почему? Есть проблема? Он пропускает самопроверку. – Leeish

+0

ДА. возникает проблема: «родители»: перемещает дерево DOM в корневой элемент документа, добавляя каждый элемент предка во временную коллекцию; он ** затем ** фильтрует эту коллекцию на основе селектора, если он поставляется. ближайший не делает этого. он перемещается вверх по дереву DOM, пока не найдет совпадение для поставленного селектора. –

0

Там же много способов, вы можете идти об этом, но один из способов было бы установить id непосредственно на самой кнопке, так что вы не должны пересекать DOM, чтобы получить Это.

<button class="delete" data-id="114">Delete</button> 

Тогда в вашем JavaScript

$('button.delete').on('click', function(e) { 
    console.log($(this).data('id')); 
}); 
+0

Это не отвечает на вопрос. Вопрос не в том, как я могу изменить свой HTML для получения данных, так как я получаю данные из ячейки. Отсюда и голосующий голос. Не отвечает на вопрос. – Leeish

+0

@ Leeish, но вы предложили это в комментарии? – chazsolo

+0

Исправить. Не как ответ. – Leeish

0

Вы всегда получите тот же результат, потому что вы всегда получаете тот же элемент. Чтобы получить значение, связанное с нажатой кнопкой, вам нужно включить кнопку, когда вы найдете элемент.

Поскольку вы используете jQuery, вы можете использовать его и для привязки событий. Удалить атрибут onclick из HTML

<button type="button" class="btn btn-danger btn_delete" id="btn_delete">Delete</button> 

В обработчик событий с помощью кнопки, которая была нажата (this), чтобы найти первую ячейку в той же строке:

$(document).ready(function(){ 

    $('#clients .btn_delete').click(function() { 
    var id = $(this).closest('tr').find('td:first').text(); 
    alert(id);  
    } 

}); 
Смежные вопросы