2012-05-02 3 views
0

У меня есть это:Jquery, от ключевого слова «это» всем ТД в таблице

$(document).on("click","#imgCancel",function(){ 
    $("#tbl_zones td").click(function(){ 
     editTables("#tbl_zones td",this) 
    }) 
}) 

Я пытаюсь сделать функцию более универсальными, так что он будет работать на нескольких столах. imgCancel находится внутри таблицы, и во всех таблицах, которые я делаю, будет imgCancel.

Я рассмотрел заменить вторую строку:

$(document).on("click","#imgCancel",function(){ 
    $(this).closest('table').find('td').click(function(){ 
     editTables("#tbl_zones td",this) 
    }) 
}) 

Он не работал, хотя, и я также не имею, что ставить в качестве первого аргумента editTables (который должен ссылаться для всех td в текущей таблице).

Edit: Модификация jsfiddle jknaack, я закончил с этим:

$(document).on("click","#imgCancel",function(){ 
    var tblID = $(this).closest('table').attr('id') 
    $("#"+tblID+" td").click(function(){ 
     editTables("#"+tblID+" td",this) 
    }) 
}) 
+1

ID являются уникальными. Значит, на странице только один элемент может иметь ID 'imgCancel'. –

+0

, если вы хотите его для большего количества таблиц, добавьте класс таблицы и назовите его imgCancel и в jquery используйте «.imgCancel». – riso

+0

Vega: Я знаю, что на странице не будет более одной таблицы за раз. – aanders77

ответ

0

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

w3c Атрибут id указывает уникальный идентификатор для элемента HTML (значение атрибута id должно быть уникальным в документе HTML).

+0

Возможно, мой вопрос был немного неясным. В документе будет только одна таблица в любой момент времени. Мне нужно знать, как я могу перейти от imgCancel (это), который находится внутри td в таблице, чтобы установить событие click для всех td в той же таблице. – aanders77

+1

Хорошо, но это должно сработать. http://jsfiddle.net/dhPsP/1/ – dknaack

0

Просто используйте внутренний идентификатор (предположение он содержит Td элемент)

$(document).on("click","#tbl_zones td", function(){ 
    editTables(this); 
}); 

"это" в вызове функции будет элемент тд щелкнул.

0

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

Его трудно узнать, как будет выглядеть ваш HTML, поэтому я просто сделал пример. Конечно, вы можете настроить селектор только для выбора внутри элемента с щелчком или в шкафу.

JS код:

$(document).on("click",".actionbuttons",function(){ 
    var selectedElements = $($(this).data("selector")); 
    selectedElements.css("background","#FF0000"); 
    $(selectedElements).click(function(){ 
     $(this).css("background","#00FF00"); 
    }) 
})​ 

HTML Пример:

<img class="actionbuttons" src="/" data-selector=".test1"/> 
<div class="test1"></div> 
<div class="test1"></div> 
<div class="test1"></div> 
<img class="actionbuttons" src="/" data-selector=".test2"/> 

<div class="test2"></div> 
<div class="test2"></div> 
​ 

http://jsfiddle.net/Ft7SB/

Смежные вопросы