通过服务将按钮链接到jQuery

时间:2013-11-01 09:50:36

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

我有一个很容易克服的小问题。出于某种原因,我无法解决这个问题。所以问题是我无法获得一个链接到一些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');
});

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

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您尝试绑定到尚未存在的元素的问题是什么?

你是在服务返回之前调用$('#test').unbind('click').click(function () { alert('Working'); });吗?

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

一旦将事件插入DOM,它就会将事件绑定到'#test'元素。

答案 2 :(得分:0)

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

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

您可以尝试将其包装在文档中,或最终使用jQuery中的.on绑定器,因为它是动态内容。

答案 3 :(得分: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);
    });
}

感谢所有帮助过我的人。