在jquery中禁用onclick功能的父/子容器
问题描述:
我想在父容器上点击子容器中的图像链接时,忽略onclick。在jquery中禁用onclick功能的父/子容器
我在一个名为“.sight-title”的容器上使用了onlick: - 用toggleClass(“active”)更改类;
<div class="sight-title" id="S2851">
<div class="row1"></div>
<div class="row2"></div>
</div>
点击后: -
初始状态Ajax调用改变内容
<div class="sight-title active" id="S2851">
<div class="detail1">
<a class="wikilink" target="_blank" title="en.wikipedia.org/wiki/Marollen" href="http://en.wikipedia.org/wiki/Marollen"><img src="img/contact/culisite_wikipedia.png" border="0"></a>
</div>
<div class="detail2"></div>
</div>
当德父 “.sight标题” 再次点击它变回初始状态。
但是,当class =“wikilinks”被点击时,我不想在父容器上的onclick工作。
jQuery代码:类= “wikilinks” 被点击时,其他部分应该被禁用...
$(".sight-title").click(function() {
var id=$(this).attr("id");
$("#"+id).toggleClass("active");
if($(this).hasClass("active")){
$("#"+id).html(ajax_load);
$.get(
loadUrlDetail+"?id="+id+'&arrondissement='+arrondissement,
{language: "php", version: 5},
function(responseText){
$("#"+id).html(responseText);
},
"html"
);
} else {
$("#"+id).html(ajax_load);
$.get(
loadUrlTitle+"?id="+id+'&arrondissement='+arrondissement,
{language: "php", version: 5},
function(responseText){
$("#"+id).html(responseText);
},
"html"
);
}
});
答
使用jQuery的解除绑定:http://api.jquery.com/unbind/
$('a.wikilink').click(function() {
//do stuff
$('a.sight-title').unbind('click');
});
编辑2:
如果链接不存在,则可能需要使用live
,而不是在创建链接时k事件。
$('a.wikilink').live('click', function() {
//do stuff
$('a.sight-title').unbind('click');
});
编辑:
作为一个侧面说明,你可能想利用jQuery's load function,而不是你的GET和这样。
我想你会发现它让你的生活更轻松。
你也应该看看你的选择器。您选择与$("#"+id)
完全相同的对象,而不是仅仅执行$(this)
。
似乎没有工作...我已经把它放在$(“。sight-title”)之前,点击部分 – 2011-04-11 21:03:35
你没有足够的实际能够分辨,但是如果你的.wikilink链接不仅仅是隐藏的,而是被加载,使用live来代替:'$('a.wikilink')。live('click',function(){...});'' – 2011-04-12 14:17:34