Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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/74.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 jquery替换DIV数据,然后跟踪对它的单击_Javascript_Jquery_Html_Events - Fatal编程技术网

Javascript jquery替换DIV数据,然后跟踪对它的单击

Javascript jquery替换DIV数据,然后跟踪对它的单击,javascript,jquery,html,events,Javascript,Jquery,Html,Events,我有一个。 我还有一个按钮: 单击按钮时:用另一个替换DIV: $( "#sendButton" ).click(function() { $( "#myContainer" ).replaceWith("<div id='calc'><input type=\"text\" id=\"screen\" value=0><button id=\"add\">+</button><button id=\"mul\">*</butto

我有一个
。 我还有一个按钮:
单击按钮时:用另一个替换DIV:

$( "#sendButton" ).click(function() {
$( "#myContainer" ).replaceWith("<div id='calc'><input type=\"text\" id=\"screen\" value=0><button id=\"add\">+</button><button id=\"mul\">*</button><button id=\"settings\">settings</button><button id=\"clear\">clear</button></div>");
});
这不起作用,我正在等待单击刚刚创建的div这一事实与此有关吗?

使用此选项

$(document).on("click","#mul",function() {
而不是

$( "#mul" ).click(function() {

    $( "#sendButton" ).click(function() {
        $( "#myContainer" ).replaceWith("<div id='calc'><input type=\"text\" id=\"screen\" value=0><button id=\"add\">+</button><button id=\"mul\">*</button><button id=\"settings\">settings</button><button id=\"clear\">clear</button></div>");
        $( "#mul" ).click(function() {
           console.log(' mul clicked!');
        });
    });
$(“#发送按钮”)。单击(函数(){
$(“#myContainer”)。替换为(“+*设置清除”);
$(“#mul”)。单击(函数(){
log('mul clicked!');
});
});
当您调用
$(“#mul”)。单击()
,您将向
#mul
附加一个事件处理程序,因为它在该点上存在。要解决此问题,只需调用
$(“#mul”)。在创建
#mul
后单击()

$( "#sendButton" ).click(function() {
    $( "#myContainer" ).replaceWith("<div id='calc'><input type=\"text\" id=\"screen\" value=0><button id=\"add\">+</button><button id=\"mul\">*</button><button id=\"settings\">settings</button><button id=\"clear\">clear</button></div>");
    $( "#mul" ).click(function() {
        console.log( ' mul clicked!' );
    });
});

您需要将事件附加到
#mul
。因为它是动态追加的,
$(“#mul”)。单击()
将不起作用

.on()
将事件处理程序附加到当前选定的元素集

尝试:

$(“#发送按钮”)。单击(函数(){
$(“#myContainer”)。替换为(“+*设置清除”);
//在此处添加侦听器
$(“#mul”)。单击(函数(){
log('mul clicked!');
});
$(“#mul”).trigger(“click”);//将其添加到代码中
});
请参阅触发器()的详细信息

这是一个演示

您必须在新内容插入dom后添加侦听器。您可以使用方法将事件与动态添加的内容绑定

试试这个:

 $("#mul").live("click", function() {
    console.log(' mul clicked!');
 });

您也可以使用jquery
.on()
,但在这里您可以添加动态内容。因此,您需要使用注册事件处理程序,如:

$(document).on("click","body #mul", function() {
    console.log(' mul clicked!');
 });

这不是OP要求的方法。这相当于单击按钮,他想知道为什么他的click事件处理程序不处理文档加载后动态创建的元素。您可以通过替换来完成此操作。单击“呼叫”并将应答替换为@Hiral@TomHeard对我没有认真地读这个问题。。但我似乎是无意中解决了这个问题:)我确实注意到,当我在评论时,这就是为什么我尽量不说你的答案是错误的,它只是有错误的意图=谢谢,非常有用的解释,非常欣赏你的屏幕名称,所以有点棒@fgf。。。
$("body").on("click","#mul",function(){
    console.log("mul clicked!");
});
$( "#sendButton" ).click(function() {
$( "#myContainer" ).replaceWith("<div id='calc'><input type=\"text\" id=\"screen\" value=0><button id=\"add\">+</button><button id=\"mul\">*</button><button id=\"settings\">settings</button><button id=\"clear\">clear</button></div>");

// add listener here
$( "#mul" ).click(function() {
console.log(' mul clicked!');
});

$( "#mul" ).trigger("click"); // add this to your code

});
 $("#mul").live("click", function() {
    console.log(' mul clicked!');
 });
$(document).on("click","body #mul", function() {
    console.log(' mul clicked!');
 });