1

我正在使用名为bluimp的jQuery文件上传插件。我的2个按钮(startcancel)正在动态生成,因此我无法将事件侦听器附加到它们上。我已经给他们最近的静态祖先附加了一个听众,即一个Id为fileupload的表格。 delete是通过start按钮成功上传后形成的。jQuery事件代表团不适用于某些按钮

delete按钮监听器正在工作,但不是start之一。 (我说的是我的自定义侦听器的两个按钮进行其他动作通过blueimp提供默认的行为都是工作的罚款。)

的代码片段:

HTML(动态生成的按钮HTML)

<td> 
    <button id="start-upload-button" class="btn btn-primary start"> 
     <i class="glyphicon glyphicon-upload"></i> 
     <span>Start</span> 
    </button> 
    <button class="btn btn-warning cancel"> 
     <i class="glyphicon glyphicon-ban-circle"></i> 
     <span>Cancel</span> 
    </button> 
</td> 

start后点击和上载完成delete的HTML形成

<button id="file-delete-button" class="btn btn-danger delete" data-type="POST" data-url="/delete/25"> 
    <i class="glyphicon glyphicon-trash"></i> 
    <span>Delete</span> 
</button> 

JS

$(document).ready(function() { 
    $('#fileupload').on("click", "#file-delete-button", function(event) { 
     console.log("Delete event fired"); 
     $("#sourcetext").hide(); 
    }); 

    $('#fileupload').on("click", "#start-upload-button", function(event) { 
     console.log("Upload event fired"); 
     $("#sourcetext").hide(); 
    }); 
}); 
+2

你说'开始'创建'删除',但'删除'工作正常,'开始'不是。那么如何显示'delete'? – teran

+0

我的“开始”监听器不工作。 'start'按预期工作,行为来自'blueimp',我没有写任何自定义行为。所以'delete'的形成由'blueimp'处理。 我只是想点击'blueimp'不能做的'start'来做更多的动作。 – Shivendra

回答

0

看起来你应该遵循manual回调的绑定到你的按钮

$("#fileupload").bind('fileuploadstart', function(e){ 
    console.log("Upload event fired"); 
}); 

在jQuery 1.7中,。对()方法是首选的方法用于将事件处理程序附加到文档。对于较早的版本,.bind()方法用于将事件处理程序直接附加到元素上

+0

是的,你说得对,我应该遵循手册。我感到困惑,因为我没有看到与我的方法2按钮相同的行为。无论如何,谢谢。 – Shivendra

+0

不客气,我从来没有读过blueimp,但它看起来很有趣:) – teran

1

您应该使用on函数。 bind事件已被弃用。

$(document).on('fileuploadstart', '#fileupload',function(e){ 
    console.log("Upload event fired"); 
}); 

即使元素是自动生成的,这将保证元素中的绑定。