jquery - 如何在 asp.net 转发器中选择一个 div

标签 jquery html asp.net css

我在 asp.net 转发器中有一个 div。当用户单击其中一个 div 时,我想在客户端处理一个事件。

我已经在 div (class="result") 中尝试了 onClick 处理程序,但它似乎没有触发。还有其他事件我也可以配合吗?

我也尝试使用 jquery 创建一个事件处理程序,但我不确定如何选择用户单击的元素。现在,我似乎将事件与所有 div 联系起来。知道如何修复单个 div 元素的 jquery 选择器吗?

我的中继器:

<div id="search-results" >
    <asp:Repeater ID="pageResults" runat="server" ItemType="ArchiveViewer.Logic.PageResult" 
        SelectMethod="GetSearchResults" OnItemDataBound="pageResults_ItemDataBound" >
             <ItemTemplate> 
                <div class="result" data-pageid="<%#:Item.PageId %>" data-pageNumber="<%#:Item.Number %>"
                    onclick="resultSelected"  >
                        <div>
                            Page: <%#:Item.Number %>
                        </div>  
                        <div>
                          <asp:Label ID="lblSearchResult" runat="server" ></asp:Label>
                        </div>                                        
                 </div>
             </ItemTemplate>
     </asp:Repeater>
</div>

还有我的 jquery 脚本:

$('#search-results div').click(function (e) {
        $(this).removeClass('active');
        $(this).addClass('active');
        // this is setting the active class for all the div's in the repeater...
});

var resultSelected = function () {
        // this is not working
};

编辑:

我不再在 div 中使用 onclick 事件。我的 jquery 代码如下所示:

添加 .active 类:

        $('#search-results div.result').click(function (e) {
            var pageNumber = ($(this).attr('data-pageNumber'));

            if (pageNumber != null) {
                $("#search-results div").removeClass('active');             
                $(this).addClass('active');
                getHighlightResults(pageNumber);
            }
        });

       var getHighlightResults = function (pagenumber) {
           // Do some stuff
           // Some function where I trigger the event on the active class
           $('div.result.active').trigger('first-click');           
        };

以下未被触发。是因为我的选择器不正确吗?

$('div.result.active').bind('first-click', function (e) {
            var pageNumber = ($(this).attr('data-pageNumber'));
            alert("in bind: " + pageNumber);
            if (pageNumber != null) {
                var dv = $('#diva-viewer').data('diva');                
                dv.gotoPageByNumber(pageNumber);
                e.stopImmediatePropagation();
            }
});

最佳答案

要使这项工作正常进行,您需要进行一些更改。您的转发器生成与此类似的 html:

<div id="search-results">
    <div class="result" onclick="resultSelected();">
        <div>result</div>
        <div>some label</div>
    </div>
    <div class="result" onclick="resultSelected();">
        <div>result</div>
        <div>some label</div>
    </div>
</div>

您需要删除所有 div 上的事件类,但只将其添加到被点击的 div 中:

$("#search-results div.result").click(function(){
    $("div").removeClass("active");
    $(this).addClass("active");
});

resultSelected = function(){
    console.log("clicked, but don't really need this...");
}

如果您想将 onclick 处理程序添加到 html,您需要将其更改为通过名称末尾的 () 调用函数。您还需要更改脚本以声明函数而不将其定义为 var。如果您使用的是 jQuery,则没有理由这样做。

Here is a fiddle.

关于jquery - 如何在 asp.net 转发器中选择一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21649035/

相关文章:

asp.net - 如何使用jquery调用服务器端函数而不刷新页面?

javascript - 如何使用 jQuery 通过数据属性查找动态添加的元素?

javascript - 使用 jQuery 编写垂直菜单

Javascript 为 jQuery AJAX 创建 JSON 哈希数组

html - 我怎样才能得到一个css伪元素:checked to work in IE8 without Javascript?

javascript - 禁用字段但允许将光标放在它上面并允许从中复制

javascript - 调整浏览器宽度时导航栏响应问题?

html - 我需要 html.Parse() 无法解析的 HTML

html - Css 选择器还是 Xpath 方法?

c# - Nuget DLL hell : Could not load file or assembly System. 运行时