我在我的Web应用程序中使用jQuery.在阅读其文档时,我读到了live()和delegate().虽然他们已经解释了这两种方法,但我不明白它们之间的确切区别.还不确定哪种方法在哪种情况下是理想的.
请帮助我清楚地了解这些方法.
谢谢
在某些情况下(基于PHP)将事件绑定到页面上不存在的ID是不是很糟糕?它会导致代码错误和缓慢,还是jQuery会自动忽略它们?
我是否应该在每个可能不存在的元素上添加如下内容?
if ( $('#element') ){
$('#element').click(function(event) {}
}
Run Code Online (Sandbox Code Playgroud)
我的页面设置是在某些条件下没有加载某个编辑框以防止函数被尝试..我用条件php包括它设置它因为它基于数据库中我不想真正传递给的情况前端.
现在,页面上的所有js都在一个包含许多功能的文件中.
我正在使用这个插件用于飞出菜单:http://www.filamentgroup.com/lab/jquery_ipod_style_and_flyout_menus/
按钮位于div内部:
<div class="stuff">
some stuff
<a class="quickfire">menu</a>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在将它应用于某些链接,如下所示:
jQuery('.quickfire').menu({
content: jQuery('#search-engines').html(), // grab content from this page
showSpeed: 400
});
Run Code Online (Sandbox Code Playgroud)
其中.quickfire是链接的类名.到目前为止这么好,有效.
然而,用户还可以触发AJAX调用,该调用将从服务器获取一堆HTML并用新内容替换div"stuff"(其本身将包含quickfire链接).
jQuery.ajax({
url: 'ajax_file.php',
data: {
action: 'create_option_new_version',
id: jQuery('#qid').val(),
div: jQuery("#addMoreOptions").parent().parent().attr('id'),
cleanOutput: true
},
success: function(data, textStatus, jqXHR){
jQuery(".stuff").html(data);
}
});
Run Code Online (Sandbox Code Playgroud)
正如所料,quickfire链接不再附加到jQuery菜单.所以,我每次都会再次链接它:
jQuery.ajax({
url: 'ajax_file.php',
data: {
action: 'create_option_new_version',
id: jQuery('#qid').val(),
div: jQuery("#addMoreOptions").parent().parent().attr('id'),
cleanOutput: true
},
success: function(data, textStatus, jqXHR){
jQuery(".stuff").html(data);
var position = jQuery('.quickfire').position();
console.log("left: " + position.left + " top: " …Run Code Online (Sandbox Code Playgroud) 是否有人能够解释为什么使用诸如此类的功能
$('#potato').delegate('.frenchFry', 'click', function(e){
// do something...
});
Run Code Online (Sandbox Code Playgroud)
比...更好
$('#potato').bind('click', function(e){
if($(e.target).hasClass('frenchFry'){
// do something...
}
});
Run Code Online (Sandbox Code Playgroud)
假设大量代表团处于一个非常动态且不断变化的#potato?是否有使用委托的速度优势(不是我能提出的任何测试)?
我必须根据一些服务响应动态生成一些按钮,并且还必须在点击这些按钮时附加一些处理程序.所以我正在使用jQuery.live()它,它第一次运作良好.
但是,当我删除所有按钮jQuery("<some container div>").empty()并再次创建这些按钮时,现在点击按钮"处理程序调用两次",如果我重复相同它会激发三次并且相同.
你们可以提前帮助我吗?
只是想知道是否有一种方法可以让jquery在点击时拦截一个链接.问题是,首次加载页面时,我的页面上的某些链接未加载.我有一个模糊的回忆,听说jquery有办法拦截所有当前和未来的链接.这是我的代码.它适用于开始时所有链接,但稍后加载到页面上的链接不会被此函数拦截
$('a').trackClick({
areaClick: function(element) { return getAreaClicked(element); },
href: function(element) { return getHrefFromElement(element); },
text: function(element) { return getTextFromElement(element); },
exceptions: function(element) { return isException(element); }
});
Run Code Online (Sandbox Code Playgroud) 我正在我的网站上工作,从我学习jQuery的那一刻起,我的印象是.live()非常有帮助,但是最近,你们这里的许多人都被推荐使用.on(),为什么是这么?是什么让.on()优于.live()?谢谢.
当我加载页面时,您将能够上传一些照片.然后将我上传的图像(使用.append)附加到list-element.如何分配我的JS代码以使这些图像可以点击?
我尝试过$('img').click()等但是因为在DOM准备好之后添加了图像我不认为它们确实可用..我该如何解决这个问题?
我有一些JavaScript为我构建一些HTML并将其插入到一个div.我正在使用jQuery 1.7.2进行此测试.
我有兴趣在input名为的文本字段上附加自定义更改或keyup事件处理程序gene_autocomplete_field.
这是我到目前为止所尝试的内容.
以下函数构建HTML,将其插入到div被调用的gene_container:
function buildGeneContainerHTML(count, arr) {
var html = "";
// ...
html += "<input type='text' size='20' value='' id='gene_autocomplete_field' name='gene_autocomplete_field' placeholder='Enter gene name...' /><br/>";
// ...
return html;
}
// ...
$('#gene_container').html( buildGeneContainerHTML(count, geneNameArr) );
Run Code Online (Sandbox Code Playgroud)
在我的调用HTML中,我gene_autocomplete_field从gene_container元素中获取,然后我覆盖keyup事件处理程序gene_autocomplete_field:
<script>
$(document).ready(function() {
$("#gene_container input:[name=gene_autocomplete_field]").live('keyup', function(event) {
refreshGenePicker($("#gene_container input:[name=gene_autocomplete_field]").val());
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
当我更改文本时gene_autocomplete_field,该refreshGenePicker()函数只发送一个警告:
function refreshGenePicker(val) {
alert(val); …Run Code Online (Sandbox Code Playgroud) 我做了一个jquery代码,如:
$('button').click(function(event) {
});
Run Code Online (Sandbox Code Playgroud)
在里面; 我把$.post数据发送到php文件并返回表行.在每一行中都有一个"添加"按钮.
然后我为这些按钮创建了另一个jquery代码,如:
$('.row_button').click(function(event) {
});
Run Code Online (Sandbox Code Playgroud)
我再次$.post尝试发送有关该行的数据,并希望通过ajax请求获取信息.但它没有用.什么都没发生.我看了代码,没有错误.
是不是可以在另一个ajax中使用ajax?或者还有另一种方式吗?谢谢.