2010-09-27 2 views
1

У меня есть динамические дивы как строки:Как звонить мыши на функции на Dyanamic дивы

<table border=1><tr><td> 
<div id='div1'>fgg</div> 
<div id='div2'>dfgdfg</div> 
<div id='div3'>vcbcvb</div> 
<div id='div4'>sdfsdf</div> 
</td></tr></table> 

Как я могу вызвать функцию JQuery при наведении курсора мыши каждого DIV? Эти divs являются динамическими, могут варьироваться.

ответ

3
$("td div").live("mouseover", function() { 
//mouseover code here 
}); 

Я предлагаю использовать класс для дивы, и с помощью селектора: $(".rows") или аналогичный. Однако вышеизложенное будет работать для разметки, которую вы указали.

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

$("#mydivid").mouseover(function() { 
    //mouseover code here 
}); 

, которые вы могли бы использовать в списке следующим образом:

var divs = ["mydiv1", "mydiv2", "mydiv3"]; 
$(divs).each(function() { 
    $("#" + this).mouseover(function() { 
    //mouseover code here 
    }); 
}); 

Это действительно плохой подход, я сильно предлагают использовать вместо класса.

+0

это работает отлично, но это повлияет на все divs в tds. Могу ли я иметь 5 divs с id mydiv и я хочу называть только эти divs, возможно ли это. Я стараюсь, чтобы он не работал. $ ("td div mydiv"). любое решение – zod

+0

$ ("# mydiv"). mouseover (?? – zod

+0

Я бы предложил использовать класс для разделов, к которым вы хотите применить его, а затем использовать селектор $ (". rows") или аналогичный. сделайте это по id, а не классу, вы захотите использовать форму, которую я добавляю к своему ответу. – sworoc

2

Использовать делегирование событий, либо .live(), либо .delegate() для привязки событий к элементам, которые создаются динамически.

0

Другим простым способом является присвоение одинакового названия класса всем разделам. вы можете перехватить событие клика по имени класса, а не id. В коде вы также можете ссылаться на текущий блок div, используя ключевое слово «this»

0

Если нет причин, по которым вы не можете использовать повторяющееся имя класса для каждого div, метод live() - это путь. Однако использование класса было бы намного более эффективным.

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