Несколько селекторов jquery - PullRequest
0 голосов
/ 12 марта 2011

Благодаря karim79 я могу нажать на ImageButton и применить эффект выделения Jquery к другому div

$("#btnFavorite").click(function() {
    // selector for element to highlight
    $("#theDiv").effect("highlight", {}, 3000);
});

Теперь я хотел бы расширить вопрос следующим образом.

Я добавляю ImageButtons к веб-странице динамически, и я хотел бы применить эффект к div для каждого ImageButton клика.

     <asp:ListView ID="ListView1" runat="server">
        <layouttemplate>
            <asp:PlaceHolder id="itemPlaceholder" runat="server" />
        </layouttemplate>
        <ItemTemplate> 
        <asp:ImageButton ID="btnFavorite" runat="server" ImageUrl="~/Images/Favorite.png"/>
        </ItemTemplate>
    </asp:ListView>

Что мне делать в этом случае? Используя ItemDataBound списка и добавляя атрибуты как

btnFavorite.Attributes.Add("onmouseclick", "doSomething") или как?

Я полностью потерян!

Ответы [ 5 ]

1 голос
/ 12 марта 2011

Некоторые говорят, что функция делегата лучше живой функции:

http://test.kingdesk.com/jquery/bind_live_delegate.php

1 голос
/ 12 марта 2011

Просто добавьте атрибут с именем class к ImageButtons, для которого вы хотите использовать функцию создания эффекта, и присвойте ему имя, например effectMaker . Затем вызовите ту же функцию, но измените селектор на

$(".effectMaker").click(function() {
    // selector for element to highlight
    $("#theDiv").effect("highlight", {}, 3000);
});

С помощью селектора ., за которым следует stringValue , вы ссылаетесь на каждый элемент, класс которого оценивается этим stringValue .

1 голос
/ 12 марта 2011

Вы можете попробовать более общий селектор, как этот ...

$("input[type='image']").click(function(){
    $(".. related div selector ..").effect("highlight", {}, 3000);
});

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

Стоит отметить, что если вы динамически добавляете ImageButton s на страницу после загрузки DOM, а не на стороне сервера, то вы, вероятно, захотите использовать live метод для прикрепления событий ...

$("input[type='image']").live('click', function(){
    $(".. related div selector ..").effect("highlight", {}, 3000);
});
0 голосов
/ 12 марта 2011

Это будет применять effect () к каждому входу типа «изображение» в контейнере «theDiv»:

$('#theDiv').find('input[type="image"]').effect('highlight', {}, 3000);

Или это будет применять его к «theDiv» при каждом щелчке изображения входного типа:

$('input[type="image"]').click(function() {
  $('#theDiv').effect('highlight', {}, 3000);
});

Не уверен, что вы пытаетесь сделать.

0 голосов
/ 12 марта 2011

Я не знаю, сработает ли это для вас, но я сделал следующее:

$("#<%= ListView1.ClientID %>").find(".ImageButtonTarget").click(function() {
   ..
});

Я даю своему кнопочному элементу уникальный класс, чтобы найти его, и анализирую весь вид списка в большом количестве. Я не уверен, есть ли один или несколько элементов div, но если элемент div находится в строке списка, вы также можете использовать комбинацию родительских элементов и найти ее также в строке ListView.

Это также сохраняет область видимости внутри ListVIew; селектор не должен анализировать всю страницу, чтобы найти кнопки изображений, только в списке.

НТН.

...