2012-05-10 86 views
2

我正在使用jQuery和jQuery UI。下面是我的标记:在jquery中嵌套元素搜索

<div id="content"> 
    <ul id="sortable">    
    <li class="button_tab"><div id="select_me">Select Me</div></li> 
    <li class="button_tab"><div id="select_me_1">Select Me 1</div></li> 
    <li class="button_tab"><div id="select_me_2">Select Me 2</div></li>   
    </ul> 
</div> 

的jQuery:

$(".button_tab").button(); 

我试图让单击事件ID =“select_me”,但没有任何反应,因为按钮()函数中插入特定的类名我不能选择是正确的:

$('div#content ul#sortable li.button_tab div').click(function() { 
    alert($(this).attr('id'));   
}); 
+1

好像它工作正常http://jsfiddle.net/dhirajbodicherla/mvg4E/ – Dhiraj

+0

为我工作也很好http://jsfiddle.net/mcgrailm/zQp5L/你是否在控制台中得到任何错误? – mcgrailm

+0

你什么意思是什么都没有发生,你究竟看到什么,有什么错误或什么? – Sarfraz

回答

3

给定的代码工作正常。然而,调用它们的顺序很重要。

.button()将清除所有click事件,因为它逻辑上应该处理'点击'。因此为儿童再次启用自定义click事件。你必须调用.button()

  1. $(".button_tab").button();
  2. $('div#content ul#sortable li.button_tab div').click(function() { alert($(this).attr('id'));
    });

要不然以后创建click事件侦听器,您可以使用.on()创造jQuery的动态click事件侦听器。

+0

是的你是对的,谢谢你,我在我的代码中做了相反的事情。 –

+0

@johnnyj :-)。如果您绝对需要动态功能,您可以为'click'事件实施'.on()'。 – Niranjan

1

尝试

$("#sortable li.button_tab div[id^='button_tab']").click(function() { 
    alert($(this).attr('id'));   
}); 

$("#sortable li.button_tab").click(function() { 
    var div_id = $(this).find("div[id^='button_tab']").attr("id"); 
    alert(div_id);   
});