2014-02-06 7 views
0

다음은 여기에 내 코드사용은

입니다 내가 버튼 "사업부는"버튼을 클릭 버튼을 클릭 호출지고, 내가 원하는 단지 버튼을 모두 클릭하면 fiddle link

$("#Maindiv:not('.Buttonclass')").live("click",function(){ 
divclick(); 
}); 

function divclick(){ 
alert("div"); 
}; 
$(".Buttonclass").live("click",function(){ 
buttonclick(); 
}); 
function buttonclick(){ 
alert("button"); 
}; 

입니다 호출되고 div 클릭 기능은 호출되지 않습니다. 내가 선택하지 못한 부분에 무엇이 빠져 있습니까?

+0

jQuery 1.9의 경우 라이브가 죽은 것으로 알고 있습니다 ... –

답변

2

부모 버튼 이벤트에서 이벤트가 전달되지 않도록하려면 하위 버튼에 event.stopPropagation()을 사용해야합니다.

working Fiddle

3

function buttonclick(event){ 
alert("button"); 
event.stopPropagation() 
}; 
event.stopPropagation() mehtod와보십시오.

Example here

$(".Buttonclass").live("click",function(event){ 
    event.stopPropagation(); 
buttonclick(); 
}); 
1

당신은 여기 :not 선택이 필요하지 않습니다. 문제는 이벤트 버블 링과 관련이 있습니다. 클릭 이벤트는 문서 루트까지 버블 될 것입니다. 따라서 div 안의 버튼을 클릭하면 버튼이 먼저 클릭 된 다음 이벤트가 상위 요소 (이 경우 div) 위로 거품이 날 것입니다.

이 동작을 명시 적으로 방지하려면 event.stopPropagation();을 호출하면됩니다. 이렇게하면 이벤트가 호출 될 때 그 이상으로 버블 링되는 것을 방지 할 수 있습니다.

는 버블 링에 대한 자세한 내용은 고정 http://jsfiddle.net/afFLB/5/

$(".Buttonclass").live("click",function(e){ 
    buttonclick(); 
    e.stopPropagation(); 
}); 

읽기 this one를 참조하십시오.

3

당신은 event.stopPropagation을 사용해야합니다 : DEMO jsFiddle

$(".Buttonclass").live("click",function(e){ 
buttonclick(); 
    e.stopPropagation(); 
}); 
+0

이것은 이미 게시 된 다른 사람들과 비슷한 대답이며 btw는 'e'가 정의되지 않았습니다. 여기에서 처리되지 않은 js 오류로 인해 전파가 중지됩니다. –

+0

@ A.Wolff 오류가 발생하여 죄송 합니다만, 저에게서 정직한 시도였습니다. 코드 스 니펫을 편집합니다 – jacquard

+0

jsFiddle도 업데이트했습니다.) –

2

먼저 대신 live()on()를 선호 이미 사용되지 않으며 JQuery와 1.9

$(document).on("click", "#Maindiv", function (e) { 
    divclick(); 
}); 
$(document).on("click", '#Maindiv .Buttonclass', function (e) { 
    e.stopPropagation() 
}); 

데모에서 제거 될 때 : Fiddle

+0

나중에 OP는 on()을 사용해야합니다. –

1
$("#Maindiv").live("click",function(){ 
    divclick(); 
}); 

function divclick(){ 
    alert("div"); 
}; 
$(".Buttonclass").live("click",function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 
    buttonclick(); 
}); 
function buttonclick(){ 
    alert("button"); 
}; 

http://jsfiddle.net/afFLB/6/

원하는 내용입니다. 전파를 중지하십시오.