Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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)_Jquery_Binding - Fatal编程技术网

无法将单击事件绑定到新创建的范围项(jQuery)

无法将单击事件绑定到新创建的范围项(jQuery),jquery,binding,Jquery,Binding,我无法将事件绑定到jQuery生成的列表。我研究过一些类似的问题,但没有找到任何解决方案 这是生成我的列表的代码: var list = '<ul>'; for (var i = 0; i < data.length; i++) { list += '<li id="' + data[i].id + '"><span class="btnRemoveItem" title="Remove item from list"></span>

我无法将事件绑定到jQuery生成的列表。我研究过一些类似的问题,但没有找到任何解决方案

这是生成我的列表的代码:

var list = '<ul>';
for (var i = 0; i < data.length; i++) 
  {
  list += '<li id="' + data[i].id + '"><span class="btnRemoveItem" title="Remove item from list"></span>' + data[i].name + '</li>';
  }
  list += '</ul>';
  jQuery("#spanContainer").html(list);
var列表=”
    ”; 对于(变量i=0;i'+data[i].name+''; } 列表+='
'; jQuery(“#spanContainer”).html(列表);
这就创建了我的通缉名单。效果很好。但是我无法通过jQuery操作列表。一些研究为我指明了将事件绑定到列表的方向。我该怎么做?我看过好几篇有同样问题的帖子,但都没有找到解决我问题的方法

我使用的是jQuery1.2.6,不能使用v.1.3(它有.live函数)

资源:

编辑: 我试过了,但不起作用

jQuery(“#7276”).bind(“单击”,函数(){alert('test');})

这将显示html输出:

<span id="itemList">
  <ul>
    <li id="listItem_7276"><span title="Remove item from list" class="btnRemoveItem" id="7276"/>Main item</li>
    <li id="listItem_7281"><span title="Remove item from list" class="btnRemoveItem" id="7281"/>Test item 4</li>
  </ul>
</span>

    主项目 测试项目4

该插件与jQuery 1.2.6配合使用,基本上与live()事件(及更多)相同。

该插件与jQuery 1.2.6配合使用,基本上与live()事件(及更多)相同。

我不确定通过jQuery操作列表是什么意思,但如果要将某些事件处理程序绑定到列表的元素,可以使用:

$("ul span.btnRemoveItem").click( yourOnClickHandler);
这将为列表中的所有span元素添加onClick处理程序。或者,您可以访问您使用的任何内容:

$("ul span.btnRemoveItem").bind( "event", yourOnEventHandler);
如果要在将每个列表元素插入DOM后分别访问它,可以执行以下操作:

$( "ul li#" + data[i].id).dosomething(); // here you can specify whatever you want to do.

我不确定通过jquery操作列表是什么意思,但如果您想将一些事件处理程序绑定到列表的元素,可以使用:

$("ul span.btnRemoveItem").click( yourOnClickHandler);
这将为列表中的所有span元素添加onClick处理程序。或者,您可以访问您使用的任何内容:

$("ul span.btnRemoveItem").bind( "event", yourOnEventHandler);
如果要在将每个列表元素插入DOM后分别访问它,可以执行以下操作:

$( "ul li#" + data[i].id).dosomething(); // here you can specify whatever you want to do.

尝试在jquery中构建数据结构:(未测试的代码)

ul=$(“
    ”); 对于(变量i=0;i”) .attr(“id”,数据[i].id) .append($(“”) .addClass(“btnRemoveItem”) .attr(“标题”,“从列表中删除项目”) 。单击(函数(){ $(this.parent().remove(); }) ).append(数据[i].name) ); } jQuery(“#spanContainer”).html(ul);
尝试在jquery中构建数据结构:(未测试的代码)

ul=$(“
    ”); 对于(变量i=0;i”) .attr(“id”,数据[i].id) .append($(“”) .addClass(“btnRemoveItem”) .attr(“标题”,“从列表中删除项目”) 。单击(函数(){ $(this.parent().remove(); }) ).append(数据[i].name) ); } jQuery(“#spanContainer”).html(ul);
嗯……将列表附加到#span容器时,html函数应该可以工作

由于无法使用live(),因此在将列表附加到#spanContainer后,必须手动重新绑定事件,如下所示:

function listGenerator(){
  ...//create the list
  jQuery('#sc').html(list);
  jQuery('#sc ul li').bind('click', function(){...});
}
$("#spanContainer span.btnRemoveItem").click(function () { 
  $(this). ... ;
});
$("#spanContainer span.btnRemoveItem").livequery('click', function(e){
  $(this). ...;
});

(另外,jQuery each()函数可以帮助您生成该列表……您可能需要查看它)

Hmm……将列表附加到#spanContainer时,html函数应该可以工作

由于无法使用live(),因此在将列表附加到#spanContainer后,必须手动重新绑定事件,如下所示:

function listGenerator(){
  ...//create the list
  jQuery('#sc').html(list);
  jQuery('#sc ul li').bind('click', function(){...});
}
$("#spanContainer span.btnRemoveItem").click(function () { 
  $(this). ... ;
});
$("#spanContainer span.btnRemoveItem").livequery('click', function(e){
  $(this). ...;
});

(另外,jQuery each()函数可以帮助您生成该列表……您可能需要查看它)

我看不到将事件分配给列表的代码。 你仍然会想要这样的东西:

function listGenerator(){
  ...//create the list
  jQuery('#sc').html(list);
  jQuery('#sc ul li').bind('click', function(){...});
}
$("#spanContainer span.btnRemoveItem").click(function () { 
  $(this). ... ;
});
$("#spanContainer span.btnRemoveItem").livequery('click', function(e){
  $(this). ...;
});
或者,如果您特别询问1.3新增的live功能,那么您可以使用一个名为livequery的旧版本jQuery的UI插件

比如说:

function listGenerator(){
  ...//create the list
  jQuery('#sc').html(list);
  jQuery('#sc ul li').bind('click', function(){...});
}
$("#spanContainer span.btnRemoveItem").click(function () { 
  $(this). ... ;
});
$("#spanContainer span.btnRemoveItem").livequery('click', function(e){
  $(this). ...;
});

Joerg

我看不到将事件分配到列表中的代码。 你仍然会想要这样的东西:

function listGenerator(){
  ...//create the list
  jQuery('#sc').html(list);
  jQuery('#sc ul li').bind('click', function(){...});
}
$("#spanContainer span.btnRemoveItem").click(function () { 
  $(this). ... ;
});
$("#spanContainer span.btnRemoveItem").livequery('click', function(e){
  $(this). ...;
});
或者,如果您特别询问1.3新增的live功能,那么您可以使用一个名为livequery的旧版本jQuery的UI插件

比如说:

function listGenerator(){
  ...//create the list
  jQuery('#sc').html(list);
  jQuery('#sc ul li').bind('click', function(){...});
}
$("#spanContainer span.btnRemoveItem").click(function () { 
  $(this). ... ;
});
$("#spanContainer span.btnRemoveItem").livequery('click', function(e){
  $(this). ...;
});

Joerg

上升一级,使用$(TheParent)定义事件


这将对类的现有和新创建的子类起作用。someClass提升一个级别,并使用$(TheParent)定义事件


这将对现有的和新创建的孩子们起作用。someClass

哇,在编辑我原来的帖子的24分钟内,有这么多反馈!我现在来测试你的建议!哇,在编辑我原来的帖子的24分钟里,有这么多的反馈!我现在来测试你的建议!我已经测试了jQuery(“#7276”).bind(“click”,function(){alert('test');})-其中#7276是span“按钮”的ID。但是什么事都没发生。嗯……你什么时候开始?页面何时加载?您可能需要根据我上面的编辑重新绑定它们。我已经测试了jQuery(#7276”).bind(“单击”,function(){alert('test');})-其中#7276是span“按钮”的ID。但是什么事都没发生。嗯……你什么时候开始?页面何时加载?您可能需要根据我上面的编辑重新绑定它们。好的,我用这个代码替换我的代码。但是没有输出。使用“console.log(ul)”,输出为[object]。为什么只应用“/”结束标记?jQuery应用了第一个标记?抱歉,它只是一个被剪断的标记。我来填。啊哈!杰出的我认为我不需要带有上述代码的.html(ul)。现在它输出所有东西。在使用jQuery构建html结构方面,我更聪明。非常感谢!注意:.click结尾缺少一个“')”。我想我应该为其他的剪贴画辩护:)好的,我用这个替换我的代码。但是没有输出。使用“console.log(ul)”,输出为[object]。为什么只应用“/”结束标记?jQuery应用了第一个标记?抱歉,它只是一个被剪断的标记。我来填