Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery和click事件_Jquery - Fatal编程技术网

Jquery和click事件

Jquery和click事件,jquery,Jquery,我有以下代码,元素被添加到页面中,但不寻常的是,click事件从未触发。有什么想法吗 function ToggleData(e) { var parentRow = $(this).parent().parent(); var rowData = $(':nth-child(2)', parentRow); var html = $("<input type='text' id='amendedval' value='" + $.trim(rowData.text

我有以下代码,元素被添加到页面中,但不寻常的是,click事件从未触发。有什么想法吗

function ToggleData(e) {
    var parentRow = $(this).parent().parent();
    var rowData = $(':nth-child(2)', parentRow);
    var html = $("<input type='text' id='amendedval' value='" + $.trim(rowData.text()) + "'/>");
    //Add the update tick
    var imgTick = $("<img src='../images/tick.png' id='imgTick'/>");
    rowData.text('');
    rowData.append(html);
    rowData.append(imgTick);
    imgTick.click(updateTickClick);
};

function updateTickClick(e) {
    alert('hi');
};
功能切换数据(e){
var parentRow=$(this.parent().parent();
var rowData=$(':第n个子(2'),parentRow);
var html=$(“”);
//添加更新标记
var imgTick=$(“”);
rowData.text(“”);
附加(html);
rowData.append(imgTick);
单击(updateTickClick);
};
函数updateTickClick(e){
警报(“hi”);
};
你能试试吗

$("imgTick").onclick = updateTickClick;
我认为添加事件处理程序可能需要实际的DOM引用,而不是使用innerHTML构建的内容

--编辑

看起来问题出在选择parentRow和rowData上——下面是我的简化示例,它在FF3.5和IE7中都适用。唯一的更改是如何选择rowData:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Testing onclick</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
    function ToggleData(e){
        var rowData = $('td');
        var html = $("<input type='text' id='amendedval' value='" + $.trim(rowData.text()) +"'/>");
        //Add the update tick
        var imgTick = $("<img src='tick.png' id='imgTick'/>");
        rowData.text('');
        rowData.append(html);
        rowData.append(imgTick);
        imgTick.click(updateTickClick);
    };
    function updateTickClick(e) {
        alert('hi');
    };
    </script>
</head>
<body>
    <table>
        <tr>
            <td><a href="#" onclick="ToggleData(this); return false;">Click me</a></td>
        </tr>
    </table>
</body>
</html>

测试onclick
功能切换数据(e){
var rowData=$('td');
var html=$(“”);
//添加更新标记
var imgTick=$(“”);
rowData.text(“”);
附加(html);
rowData.append(imgTick);
单击(updateTickClick);
};
函数updateTickClick(e){
警报(“hi”);
};

它可以是使用或不使用匿名函数注册的回调

您是否尝试在VS中调试以查看这里发生了什么。这里提供的信息似乎不完整,无法推断任何事情。对于id为imgTick的div,我将在jQuery中为单击事件执行此操作:

$('#imgTick').click(function({

alert('Hi');

}))

您的imgTick正在动态添加到页面中。请尝试使用.live,而不是使用.click():

   imgTick.live("click", updateTickClick);
而且,不,与上面所说的相反,它不必是匿名的。

改变了 var rowData=$(':第n个子(2'),parentRow); 到 var rowData=$('td:n第n个子项(2)”,parentRow)


现在单击事件正确发生。

仍然是相同的问题,没有触发任何事件。他正在使用jQuery的单击事件绑定器(而不是onclick DOM绑定器)。imgTick无论如何都应该是DOM的一部分,因为它被附加到rowdata中。如果imgTick周围没有引号,怎么样?我建议您查看Firebug(),它的调试器对于消除这样的bug非常有用等同于“document.createElement(“IMG”)”?jQuery解析字符串,然后创建并返回DOM元素,而不是使用innerHTML将其插入文档中?为什么需要这样做?我认为传递函数引用是完全有效的。不需要匿名函数,函数引用是完全合法的。如Tony所指出的,如果没有live,则需要函数回调来注册启动时未知的事件。是否可以使用FireBug检查rowData和parentRow是否实际包含任何DOM对象?(可能选择器返回0个元素)正在使用correctdata.try窗口将img添加到正确的页面。alert('hi')可能;-)有趣的是,如果我将图像添加到parentRow,而不是rowData,则单击事件会引发火灾,我不确定原因。这是我想的,但我想我会检查。他在元素添加到页面后绑定单击。我想用于获取imgTick变量的选择器不正确?不应该只有美元吗。
   imgTick.live("click", updateTickClick);