2013-07-19 84 views
0

我想追加jQuery中的类(menuSelector)的图像,然后在类的单击上写一些功能。Jquery类多次点击事件调用

$("<div>").addClass("node").append($("<img>", { src: menuImg, class: "menuSelector" })) 
           .data("tree-node", nodeCount) 
           .append($nodeContent); 

$('.menuSelector').live("click",function (event) { 
    alert('I am clicked'); 
    }); 

现在问题在于它找到的每个图像项的循环中的类单击事件调用。

HTML:

<div class="node" style="cursor: n-resize;"> 
<img src="/GroupTree/styles/pointer.gif" class="menuSelector">Group 1</div> 

<div class="node" style="cursor: n-resize;"> 
<img src="/GroupTree/styles/pointer.gif" class="menuSelector">Group 2</div> 

我想,如果我关闭了图像标签,可能是我的问题就解决了,但它不是关闭:(

我想:

.append($("<img/>", { src: menuImg, class: "menuSelector" })) 
and 
.append($("<img/>", { src: menuImg, class: "menuSelector" },"</img>")) 
and 
.append($("<img/>", { src: menuImg, class: "menuSelector" })).append($("</img>")) 

但他们没有工作

+2

要添加的循环内的点击处理程序之后,它适用于每一个图像。移动循环外的点击处理程序。可能是 – jbabey

+0

,让我试试。 –

+0

是的,我在循环中添加了点击处理程序。移动点击处理程序解决了我的问题。 –

回答

0

尝试使用this 东西像这样:

$('.menuSelector').on("click",function (event) { 
    console.log(this); // this - add some action for this 
    $(this).hide(); // for test)) 
}); 
0

.append($("<img/>", { src: menuImg, class: "menuSelector" }))是正确的。

我打赌你的问题以某种方式连接到使用$.fn.live。尝试使用$.fn.bind,或者如果这不起作用,请尝试使用$.fn.delegate从父项<div>进行委派。

如果以前的解决方案不起作用,您可能还必须发布更多代码以使您的意图更清晰。

0

线

$( 'menuSelector。 ')生活( “点击”,函数(事件){ 警报(' 我点击');} )。

将事件注册到每个迭代中带有menuSelector类的元素!

尝试做

var img = $("<div>").addClass("node").append($("<img>", { src: menuImg, class: "menuSelector" })) 
img.live("click",function (event) { 
    alert('I am clicked'); 
    }); 
img.data("tree-node", nodeCount).append($nodeContent) 

这将增加回调只为当前图像

顺便说一句,.live被弃用,并于去除 - 见http://api.jquery.com/live/