플러그인을 쓰고 있습니다. (필자는 많은 것을 썼습니다.) 팝업 상자에 PNG 이미지를 처음 표시하기 위해 Fancybox를 처음 사용하기로 결정했습니다. 플러그인은 처음에는 초기 페이지 렌더링의 일부인 html에서는 잘 작동하지만, 아약스 호출에서 반환하는 동일한 html은 팝업을 생성하지 않으며 오류를 발생시키지 않습니다.Fancybox는 처음 렌더링 된 HTML에서는 작동하지만 ajax 호출 결과로 렌더링 된 HTML에서는 작동하지 않습니다.
내 질문은 : html이 ajax 호출의 결과로 div에 삽입되면 팝업에 Fancybox와 Thickbox를 사용할 수 있습니까? 그렇다면 무엇이 잘못 되었습니까? - 아약스에서 다시 처음이 작품을 렌더링하지만, HTML
$html = "
<div class='skTable'>
<div class='skTableHeading'>
<div class='skTableHead skQtyColumn'>#</div>
<div class='skTableHead skNameColumn'>Name</div>
<div class='skTableHead skImgColumn'>Image</div>
</div>
<div class='skTableBody'>";
foreach ($itemList as $item) {
$html .= "
<div class='skTableRow'>
<div class='skTableCell skQtyColumn'>$item->quantity</div>
<div class='skTableCell skNameColumn'>$item->itemName</div>
<div class='skTableCell skImgColumn'>
<div style='display:none'>
<div id='$item->itemCode-$item->itemNumber' style='width:245px;height:342px;'>
<img width='245' height='342' src='$item->imageUrl'>
</div>
</div>
<a class='itemShow' href='#$item->itemCode-$card->itemNumber'>View</a>
</div>
</div>";
}
$html .= "
</div>
</div>";
$results['html'] = $html;
$results['success'] = TRUE;
정확한 동일한 코드가 초기 페이지를 렌더링하는 HTML에 사용되는 :
이 내가 아약스 호출에서 HTML을 생성하는 방법이다 전화하지 않습니다. 초기는 렌더링
jQuery(document).ready(function($) {
$('#ChoiceID').on('change', function() {
var valueSelect = $(this).val();
var ajaxurl = plugin_vars.ajax_url;
var ajax_nonce = plugin_vars.ajax_nonce;
$.ajax(ajaxurl, {
type: "POST",
dataType: 'json',
data: {
action: "getChoiceResult",
security: plugin_vars.ajax_nonce,
userChoice: valueSelect
},
success: function (results) {
var returnedHTML = results.html;
if (results.success) {
$('#ChoiceResult').html(returnedHTML);
} else {
$('#ChoiceResult').html('<span>No results available: ' + valueSelect + '</span>');
}
},
error: function (errorThrown) {
alert('error running');
alert("Error thrown: " + errorThrown);
} });
});
});
는 아약스 전화를 개막하고 결과를 배치 할 위치를 제공하는이 관련 HTML을 포함
나는 문제는 별도의 파일에있는 내 jQuery를에 의심 :
<div class="skTableCell">
<form action="" id="plugin_form">
<div class="skTable">
<div class="skTableRow">
<div class="skTableCell">
<label for="UserChoice" class="skLabel">Make a choice:</label>
</div>
<div class="skTableCell">
<select name="UserChoice" id="ChoiceID" class="skSelect">
<option value="NonChoice">--- Choose a deck! ---</option>
<option value='Choice1'>Choice 1</option>
<option value='Choice2'>Choice 2</option>
<option value='Choice3'>Choice 3</option>
</select>
</div>
</div>
</div>
</form>
</div>
<br/><br/>
<!-- where the response will be displayed -->
<div id="ChoiceResult"></div>
워드 프레스의 Fancybox 설정은 Fancybox jQuery를에 추가 설정이 확인할 외부 호출이 있습니다
jQuery(".itemShow").fancybox({
'scrolling' : 'no',
'titleShow' : false
});
jQuery(".modal").fancybox({ // for modals pages
'autoSize' : true,
'type' : 'ajax'
});
jQuery("#zoom").fancybox({ // for modal images
'autoScale' : true,
'transitionIn' : 'fade',
'transitionOut' : 'fade'
});
을
내가 대기열에 포함하는 CSS는 단순히 형식 지정이며 관련이 없습니다.
내가 포함 할 수있는 모든 것, 그러나 더 많은 것을 요구하는 것을 망설이지 말라. 오류 로그는 눈에 띄지 않으며 브라우저 콘솔은 오류를보고하지 않습니다. 초기 렌더링의보기 링크를 클릭하면 Fancybox 팝업이 표시됩니다 (시도했을 때 thickbox처럼).하지만 axy 호출의 결과로 ChoiceResult div에 삽입 된 html은 Fancybox 또는 내장 thickbox.
누구든지 흘릴 수있는 불빛에 미리 감사드립니다.
나는 이것이 이전 질문과 중복 된 것이라고 생각합니다. https://stackoverflow.com/questions/47386229/fancybox-not-working-on-dynamically-added-external-links – Janis
나는 당신의 쪽지를 보았을 때 너무나 흥분했습니다. 나는 그 하나를 놓쳤기 때문에 연결하고, 슬프 도다. 그 선택기 논리를 적용 해봤지만 여전히 작동하지 않습니다. 이것이 내가 한 것입니다 : ' $(). fancybox ({ 선택자 : 'a.itemShow ', \t 스크롤 :'아니요 ', \t titleShow : 거짓 }); ' 여러 가지 옵션으로 시도해 보았습니다. – FreedomRings
위 서식에 죄송합니다. 코드 4 칸을 들여 쓰는 것을 잊어 버렸습니다. – FreedomRings