Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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
Javascript Ajax生成元素上的触发器事件_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript Ajax生成元素上的触发器事件

Javascript Ajax生成元素上的触发器事件,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我不能在任何ajax生成的元素上使用任何事件(例如onlick)。我读过jQuery的“.on”函数,但我需要使用类似于的东西。 元素的Id是随机的,所以我不能使用 `$('.some-parent-class').on('click', '.element', function() {// DO STUFF!});` 我希望有人能帮助我!谢谢。我通过动态生成一个可单击的DIV元素来模拟Ajax生成的部分 HTML: <div id="container"> </div>

我不能在任何ajax生成的元素上使用任何事件(例如onlick)。我读过jQuery的“.on”函数,但我需要使用类似于
的东西。 元素的Id是随机的,所以我不能使用

`$('.some-parent-class').on('click', '.element', function() {// DO STUFF!});`

我希望有人能帮助我!谢谢。

我通过动态生成一个可单击的DIV元素来模拟Ajax生成的部分

HTML:

<div id="container">
</div>

JS:

$("#container").append(
    $('<div>').attr('id', 'randomId').html('New element')
);

$("#randomId").click( function(){
    alert('Clicked!!!');
});
$(“#容器”).append(
$('').attr('id','randomId').html('New element')
);
$(“#randomId”)。单击(函数(){
警报('点击!!!');
});
编辑:使用类而不是Id的同一示例:

$("#container").append(
    $('<div>').attr('id', 'randomId').addClass('parent-class').html('New element')
);

$(".parent-class").click( function(){
    var clickedElementId = $(this).attr("id");
    alert('Element with ID ' + elementId + ' Clicked!!!');
});
$(“#容器”).append(
$('').attr('id','randomId').addClass('parent-class').html('New-element'))
);
$(“.parent类”)。单击(函数(){
var clickedElementId=$(this.attr(“id”);
警报('ID为'+elementId+'的元素已单击!!!');
});
工作


用这个……

你可以做如下事情:

<div class="myBoxes">
    <div id="oneBox" onclick="myFunc(this.parentNode);">
        <p>Some content..</p>
    </div>
</div>

function myFunc(){
    // Code goes here
   alert('function fired!');
}

一些内容

函数myFunc(){ //代码在这里 警报('函数已触发!'); }
在将事件处理程序添加到DOM之前,可以使用

$(responseHtml).find('some selector').on('click', handler);
很可能有一个或多个对您有效

例如:id以选择器开头

$(responseHtml).find('div[id^=myId]').on('click', handler);
如果无法使用css选择器区分响应中需要的元素,则必须修改服务器脚本,该脚本使用唯一的id或类生成HTML,该id或类与您可以查找的模式匹配

编辑

您可以使用css类来标识每个元素。使用:

$('.myCloseButtonClass').on('click', function(){ $(this).parent.hide(); });
这里的关键是
this
对象。它将引用已单击的特定元素,从而允许您仅关闭包含已单击关闭按钮的聊天窗口


使用AJAX echo

为什么不向其中添加一个类,然后使用jQuery类选择器将其作为目标。当你说它是“ajax生成的”时,你是什么意思。。。为什么不能使用类?为什么id是随机的?请点击这里。Ajax生成的意思是,我调用一个PHP文件,其中包含一些html代码。这段代码是ajax调用的响应,我只是将其附加到父元素。我不能使用类,因为每个元素都是唯一的。(它们是聊天窗口,当您单击它们的标题时应单独关闭)。id是用户的id(唯一)@ArEsiiX我的答案通过动态创建div元素并将事件侦听器附加到它来模拟“Ajax生成的”东西。您可以始终使用jQuery检索组件ID。我需要元素本身的onclick事件,因为我没有机会获取ID。(2个文件),因此,在从php ajax附加响应页面后,您应该在附加页面时在部分中找到元素,如果控件位于您检索的页面中并且id是唯一的,则更容易获取它,如$(“#uniqueid”)。在(“单击”,function(){//do stuff});,如果您也愿意,您可以使用findjquery获取输入,在这种情况下,您应该使用正确的控件选择器……来澄清我的问题:我有一个类似facebook的聊天。每个聊天窗口都应该通过点击“x”图标关闭(id=random,window id=random)。窗口是在加载站点后生成的。我应该如何使用$(“#randomId”)。单击未定义数量的元素?似乎是我唯一能做到这一点的方法?@ArEsiiX你见过第二个使用CSS类而不是ID的例子吗$(.parent class”)。单击(function(){…}这将为分配给“parent class”的每个元素触发事件CSS class.onclick属性不是这样做的正确方法。您必须使用动态附加的事件侦听器。您的HTML代码不应该有任何事件侦听器。是否要通过单击一个来关闭任何聊天窗口?类将不起作用。如何使用$(“#randomId”)。单击未定义数量的元素?@ArEsiiX,随机id是否遵循任何类型的模式,如“myId_001”、“myId_002”、“myId_999”?@ArEsiiX是的,单击事件仅适用于单击的元素。它不会对仅单击一个元素时选择的每个元素触发。
对象将是单击的元素。
$('.myCloseButtonClass').on('click', function(){ $(this).parent.hide(); });