2013-03-28 2 views
-2

Я не могу заставить мое поведение клика вести себя. Мне нужно, чтобы он запускал каждый раз <input> в каждой строке таблицы - и только в этой таблице, а не в <input> в другом месте на странице (не видно на фрагменте).

$('input').click(function() { 

ОДНАКО это делает огонь из всех <input> в другом месте на моей странице (не видел в фрагментах).

Так что я попытался указать его идентификатор .

$('#File_Number').click(function() { 

Но это работает ТОЛЬКО на первой строке таблицы и только на первом <input>.

Каждая строка таблицы генерируется MySQL. Таким образом, существует много вхождений id="file_number".

Здесь функционирует исходный код: http://jtjohnston.net/clickeventtest/database.php

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

id="File_Number" 
id="File_DateTime" 
id="Address" 
id="File_Comments" 

<tr id="2013-0469"> 
<td id=""><input id="File_Number" value="2013-0455" type="readonly" size="7"></td> 
<td id=""><input id="File_DateTime" value="2013-03-16 03:08:12" type="readonly" size="18"></td> 
<td id=""><input id="Address" value="123 Sesame Street" type="readonly" size="20"></td> 
<td id=""><input id="File_Comments" value="Something said done entered" type="readonly" size="30"></td> 
</tr> 
<tr id="2013-0570"> 
<td id=""><input id="File_Number" value="2013-0965" type="readonly" size="7"></td> 
<td id=""><input id="File_DateTime" value="2013-03-17 02:08:14" type="readonly" size="18"></td> 
<td id=""><input id="Address" value="123 Baker Street" type="readonly" size="20"></td> 
<td id=""><input id="File_Comments" value="Something said done entered" type="readonly" size="30"></td> 
</tr> 

<script type='text/javascript'> 
//$.removeCookie("test"); 

//$('input').click(function() { 
$('#File_Number').click(function() { 
    var id = $(this).parents('tr').attr('id'); 
     alert(id); 
// $.cookie("Row_Id", id, { expires : 10}); 
     window.open("something.php","_new"); 

}); 

</script> 
+1

Я очень не любят, когда люди на этом форуме скупы ради скупы, так что я надеюсь, что вы не» Я так и не комментирую. Они не должны были обижаться вообще, а быть конструктивными. Что мне немного нравится, когда люди задают вопросы и явно мало понимают, 1: вопрос, который они задали. 2: технологии, которые они используют в своем вопросе. что sux заключается в том, что многие люди задают вопросы и получают хорошие ответы, но ничего не узнают от него. С учетом сказанного, что на самом деле является точкой stackoverflow, если вы не учитесь на своих ошибках? – iAmClownShoe

+0

А? Кто имел в виду? Что я упустил? $ ('table'). On ('click', 'input', function (e) { Почему существует функция «e» в функции (e)? Я никогда не видел этого раньше. – JTJohnston

+0

, что e является переменная, которая представляет собой объект события, который передается вызову функции при запуске события. У него есть данные, прикрепленные к нему, которые вы можете использовать в функции, такой как позиция мыши клика или какая клавиша была нажата и т. д. – iAmClownShoe

ответ

2

идентификаторы должно быть уникальными, замените все входные идентификаторы с классом вместо этого, а затем настроить Jquery соответствующим образом ориентированных на класс, например,

$('.File_Number').click(function() { 
    var id = $(this).parents('tr').attr('id'); 
     alert(id); 
// $.cookie("Row_Id", id, { expires : 10}); 
     window.open("something.php","_new"); 

}); 

Не забудьте добавить идентификатор к вашей таблице слишком (в случае, если вы используете несколько таблиц на этой странице).

Вы могли бы предназначаться его следующим образом:

$('#tableID').on('click', 'input', function() { 

}); 
+0

Что вы подразумеваете под классом ? – JTJohnston

+2

http://www.w3schools.com/ go learn html/css ... класс - это способ выбора элемента в DOM, чтобы вы могли изменить его стиль в css или (используя jquery), получить доступ к нему в javascript – iAmClownShoe

+0

Я использую w3schools много, но я никогда не видел такой класс. Я буду читать его. $ ('table'). on ('click', 'input', function (e) {Почему существует функция «e» в функции (e)? Я никогда не видел этого раньше. – JTJohnston

1

попробовать этот

$('#tableID td input').click(function() { 
.... 

или делегировать ввод в таблицу, используя on

$('#yourTableID').on('click', 'input', function() { 

и да ... как всегда ... Идентификатор всегда должен быть уникальным ... он может работать, но может помочь вам позже

+2

это будет работать, предполагая, что на странице нет другой таблицы с входами в нее – iAmClownShoe

+0

Было ли это так просто? :) Благодаря. Но у меня есть другие ресурсы в другом месте, которые также находятся в ячейках таблицы. Я надеялся на что-то конкретное в этой таблице. Могу ли я указать эту таблицу по id или что-то еще? – JTJohnston

+1

Надеюсь, OP не использует этот ответ в качестве ответа. Да, это будет работать в нынешней схеме, но, как мы уже говорили с Бипеном, это, скорее всего, вызовет у вас проблемы в будущем, если у вас когда-нибудь будет другая таблица на странице, в которой есть входные данные. Чтобы быть в безопасности, вы должны определить свои селекторы немного больше. – iAmClownShoe

0

Используйте событие делегация:

$('#tableid').on('click', 'input', function() { 

#tableid должен быть идентификатором вашего стола, где вы хотите, чтобы слушать его входной ребенок щелчков.

+0

Да, я обновил свой ответ, чтобы исправить это. – Nelson

1

Каждый идентификатор должен быть уникальным на странице, так что вам нужно заменить входные идентификаторы с классами, как

<tr id="2013-0469"> 
    <td id=""><input class="File_Number" value="2013-0455" type="readonly" size="7"></td> 
    <td id=""><input class="File_DateTime" value="2013-03-16 03:08:12" type="readonly" size="18"></td> 
    <td id=""><input class="Address" value="123 Sesame Street" type="readonly" size="20"></td> 
    <td id=""><input class="File_Comments" value="Something said done entered" type="readonly" size="30"></td> 
</tr> 

JS

$('table').on('click', 'input', function(e){ 
    var id = $(this).parents('tr').attr('id'); 
     alert(id); 
// $.cookie("Row_Id", id, { expires : 10}); 
     window.open("something.php","_new"); 

}) 

также добавить идентификатор атрибута в таблицу, так что вы может идентифицировать его легко

<table id="my-table"> 
    <tr> 
     <td>..... 

Затем измените сценарий

$('#my-table').on('click', 'input', function(e){