【问题标题】:Linking button to jQuery through service通过服务将按钮链接到 jQuery
【发布时间】:2013-11-02 05:49:21
【问题描述】:

我有一个小问题,应该很容易克服。出于某种原因,我无法解决这个问题。所以问题是我无法获得链接到某个 jquery 的按钮。我的设置如下(显示相关代码):

Default.aspx

jQuery:

function getContent() {
    var data = {
        numberID: 1
    };

    $.jsonAspNet("ContentService.asmx", "GetContent", data,

    function (result) {
        $('#content').html(result);
    });
}

jQuery(document).ready(function () {
    getContent();
});

HTML:

<div id="content"></div>

ContentService.vb

<WebMethod()> _
Public Function GetContent(number As Integer) As String
        Dim sb = New StringBuilder

        sb.AppendLine("<table>")
        sb.AppendLine("<tr>")
        sb.AppendLine("<td class='ui-widget-header ui-corner-all'>Number</td>")
        sb.AppendLine("</tr>")
        sb.AppendLine("<tr>")
        sb.AppendLine("<td>" & number & "</td>")
        sb.AppendLine("<td><a href='#' id='test' class='fg-button ui-state-default ui-corner-all'><img src='" & Context.Request.ApplicationPath & "/images/spacer.gif' class='ui-icon ui-icon-pencil' /></a></td>")
        sb.AppendLine("</tr>")        
        sb.AppendLine("</table>")

        Return sb.ToString
    End Function

这就是我一切正常的基础知识,但我不确定如何获得一个按钮 (id='test') 以链接到一些 jQuery。我希望它被按下并弹出一个弹出窗口。

我尝试将 jQuery 放在 default.aspx 上,但这似乎不起作用,除非该按钮位于该页面的 HTML 中。

$('#test').unbind('click').click(function () {
    alert('Working');
});

我确信这很容易做到,但我已经尝试了一段时间,似乎无法让它发挥作用。

【问题讨论】:

  • 所以您只希望在单击带有 ID 测试的 a href 时收到警报?
  • @NickN。差不多,好吧,我会做其他事情,但我就是无法链接。那里的警报表明它有效。
  • 是的,我明白了,只是询问您是否使用术语按钮替换了 a。试试我的答案
  • 您是否知道您的文档没有正确关闭?我会在你的问题中改变它。
  • 还有一件事,既然您在文档中使用了 jQuery 标签,那么您不应该用 jQuery 替换所有 $ 标签。 Chrome 控制台说什么? (CTRL-SHIFT-J)

标签: javascript jquery html asp.net vb.net


【解决方案1】:

问题是您尝试绑定到尚不存在的元素吗?

您是否在服务返回之前拨打$('#test').unbind('click').click(function () { alert('Working'); });

$('#test').on('click', function () {
      alert('Working');
});

一旦将事件插入到 DOM 中,这会将事件绑定到“#test”元素。

【讨论】:

  • 嘿,感谢您的回复,我相信这应该可以工作,但它仍然没有到达 jQuery。
  • 你能创建一个 jsFiddle 让我看看吗?
【解决方案2】:

当您通过 ajax 加载内容时,您必须绑定到 $('#content')。像这样:

$(function () {
    $('#content').on('click', '#test', function () {
        e.preventDefault(); // if a default action is not needed needed
        alert('Working');
    });
});

【讨论】:

    【解决方案3】:

    我想这是为了不阻止 A href 标记的默认行为。现在它可能会链接到“#”而不是触发 onclick 事件。

    $('#test').on('click', function (e) {
        alert('Working');
        e.preventDefault();
    });
    

    您可以尝试将其包装在准备好的文档中,或者最终使用来自 jQuery 的 .on binder,因为它是动态内容。

    【讨论】:

    • 嘿,感谢您的回复,我相信这应该可以工作,但它仍然没有到达 jQuery。如果我在浏览器上查看源代码,它会显示正确的代码。就像我说的,如果代码在同一页面上,它会起作用,但当它来自 content.vb 时就不会。
    【解决方案4】:

    已解决

    这是一件非常小的事情导致了这个。解决这个问题的代码如下:

    $('#test').unbind('click').click(test);
    

    这需要使用json 进入函数内部,所以:

    function getContent() {
        var data = {
            numberID: 1
        };
    
        $.jsonAspNet("ContentService.asmx", "GetContent", data,
    
        function (result) {
            $('#content').html(result);
            $('#test').unbind('click').click(test);
        });
    }
    

    感谢所有试图帮助我的人。

    【讨论】:

      猜你喜欢
      • 2012-06-02
      • 2011-01-06
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2023-04-04
      • 2013-06-13
      相关资源
      最近更新 更多