2012-12-21 14 views
1

후 데이터 요소에이 프로젝트에 대한JQuery와 ... 나는이 일에 가장 적합한 제목 확실하지 않았다 상호 작용

Live Link Provided Here

내 전반적인 목표를 듣고 없습니다. 전자 메일을 다운로드해야하는 특정 문서가 있습니다. asp.net을 통해 나는 리피터를 바인드하고 jquery로 href를 제거하고 이메일 주소를 추가 할 때까지 rel 태그에 배치한다. 그것이 아닌 경우 그 다음 인 경우가 data-email 태그 = "진정한"는 bootstrap modal가 나타납니다 경우

$('a[data-email="True"]').each(function() { 
    var href = $(this).attr('href'); 
    $(this).attr('href', '#_'); 
    $(this).attr('rel', href); 
}); 

JQuery와 여부를 확인하고 ajax을 통해 형태는 web method를 호출하고 데이터베이스에 이메일을 추가 복제. 성공시

$('.emailcheck').live("click", function (e) {   
    if ($(this).data("email") == "True") { 
     $('#emailModal').modal(); 
    } 
}); 

모달가 닫히고 각 data-email="True"의 링크는 href에 다시 추가하고 data-email은 거짓

$('#emailModal').modal('hide'); 
$('body a[data-email="True"]').each(function() { 
    var reltag = $(this).attr('rel'); 
    $(this).attr('href', reltag); 
    $(this).attr('data-email', 'False'); 
}); 

이 모두 성공적으로 발생하고, 이메일 다운로드시로 설정 다른 클릭. 그러나 다운로드 링크를 클릭하면 모달이 계속 팝업됩니다.

누군가가 아직 모달이 왜 나타나고 있는지 해결책을 제시해 줄 수 있습니까? 또한 성공 스크립트에서 자동으로 다운로드를 트리거하는 방법이 있습니까?

+0

는 ('데이터 이메일')'$ (이) .removeAttr을 사용할 수 있습니다 될 수'대신 ('거짓' '데이터 이메일')'$ (이) .attr의;' 그래서 그것은'data-attr'을 제거 할 것입니다. –

+0

모달을 시작하는 코드가 보이지 않습니다. data-email = true 인 경우 앵커에 첨부 된 클릭 이벤트가있는 것으로 가정합니다. 모달 팝하지 않으려면 false를 넣어야합니다. – Syon

+0

@Sheikh Heera 좋은 생각, 같은 결과. 어떻게 든 그것은 원래 DOM에로드 된 내용을 읽는 것 같습니다. –

답변

1

이 시도 - 변화의 많이하지하지만 여기가

온로드 기능

$('.emailcheck').each(function() { 
    var href = $(this).attr('href'); 
    $(this).attr('href', '#_').attr('rel', href); 
}); 

클릭 이벤트

$(document).on("click", '.emailcheck', function(e) { 
    e.preventDefault() 
    if ($(this).attr("data-email") == "True") { 
     $('#emailModal').modal(); 
    } 
}); 

이메일 기능을 제출 작동합니다 보여주는 jsFiddle입니다

$('#emailModal').modal('hide'); 
$('.emailcheck').each(function() { 
    var reltag = $(this).attr('rel'); 
    $(this).attr('href', reltag).attr('data-email', 'False'); 
}); 
+0

라이브 페이지를 볼 수도 있습니다. 변경해야했던 것은 click 이벤트에서 e.preventDefault()를 제거하는 것뿐이었습니다. 왜냐하면 그것은 href를 원래 위치에 놓기 때문에 그렇지 않다면 다운로드하지 않기 때문입니다. 보너스 : 두 번째 클릭없이 다운로드를 자동으로 시작하는 팁은 무엇입니까? –

+0

아 멋지다. 유일한 점은'document.location.href = reltag; '를 설정하는 것이지만 페이지에서 삭제된다는 것입니다. 다운로드가 실행되지 않을 것이라고 생각합니다. 전에 결코 시도하지 않았다. – Syon

+0

해당 통화에서 대상을 설정할 수 있습니까? –