0

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

默认.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>

内容服务.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

这就是我所拥有的一切工作的基础,但我不知道如何让 a 按钮 ( id='test') 链接到一些 jQuery。我希望它被按下并弹出一个弹出窗口。

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

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

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

4

4 回答 4

1

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

$(function () {
    $('#content').on('click', '#test', function () {
        e.preventDefault(); // if a default action is not needed needed
        alert('Working');
    });
});
于 2013-11-01T10:01:27.040 回答
1

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

$('#test').unbind('click').click(function () { alert('Working'); });在服务返回之前打电话吗?

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

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

于 2013-11-01T10:04:49.437 回答
0

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

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

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

于 2013-11-01T09:56:20.623 回答
0

解决了

造成这种情况的原因是一件非常小的事情。解决这个问题的代码如下:

$('#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);
    });
}

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

于 2013-11-01T10:53:50.763 回答