이것은 내 첫 S.O입니다. 질문을 보내 주셔서 감사합니다. 나는 건설적인 종류의 아이디어와 비판에 열려 있습니다.Wordpress를 사용하는 동안 사이드 바 탐색에서 jQuery-UI 아코디언 항목으로 어떻게 딥 링크 할 수 있습니까?
내 문제는 다음과 같습니다. 기본 컨텐트 영역에 jQuery UI Accordion Widget이 있고 각 아코디언 헤더에 해당하는 링크가있는 사이드 바 메뉴가있어서 사이드 바 메뉴에서 딥 링크 할 수있는 가능성이 있습니다. 왼쪽 사이드 바 메뉴를 아코디언의 항목에 추가합니다. 가장 위대한 UI가 아니며, 내가 이미 알고있는 방식으로 아코디언의 목적을 무효로합니다. —. 그러나, 나는 여전히 다른 응용 프로그램을위한 배열 기능을 이해하는 것이 유용 할 것이라고 생각합니다.
웹 사이트는 Wordpress에 있으므로 맞춤형 게시물 유형을 사용하여 아코디언 요소와 사이드 바 링크가 클라이언트에 추가되거나 제거됩니다. 따라서, 이것은 배열을 사용하여 정착 한 접근법입니다. 문제를보다 쉽고/효율적으로 처리 할 수있는 방법을 생각해 보면 알려주세요.
내 아코디언 코드 (나는 간결에 대한 WP_Query 루프를 제거했습니다) 다음과 같습니다
<div id="accordion">
<h1><?php the_title(); ?></h1>
<div><?php the_content(); ?></div>
</div>
내 왼쪽 사이드 바 코드는 다음과 같습니다 (다시, 내가 루프를 제거했습니다) :
<h1 class="ui-accordion-header ui-state-default ui-corner-all ui-accordion-icons" role="tab" id="ui-id-1" aria-controls="ui-id-2" aria-selected="false" aria-expanded="false" tabindex="0">
<span class="ui-accordion-header-icon ui-icon ui-icon-triangle-1-e"></span>
"The title from Wordpress"
</h1>
: 워드 프레스와 아코디언 위젯 페이지로드 작업을 수행 할 때
<ul class="resources-nav">
<li><a href=""><?php the_title(); ?></a></li>
</ul>
지금, 그들은 헤더 요소에이 코드를 생성
보시다시피 헤더 ID는 id="ui-id-1"
입니다. 아코디언의 각 헤더 요소에 대해이 ID는 id="ui-id-3"
, 그 다음은 id="ui-id-5"
등으로 변경됩니다. 왼쪽 사이드 바에서 딥 링크하기 위해 각 헤더 요소에서 ID 속성을 가져 와서 배열에 넣기로했습니다. 이 같은 :
jQuery(document).ready(function($) {
var navLi = $('.resources-nav li a');
var aHeader = $('#accordion h1');
var n = []; // Sidebar nav items
var a = []; // Accordion items
//Get Nav items and store in an array
$(navLi).each(function() {
n.push($(this));
});
//Get Accordion header items and store in array
$(aHeader).each(function() {
var id = $(this).attr('id');
a.push(id);
});
// Add id from each Accordion header to href="#" of each nav link.
// This will create deep linking possibilities, right? Well...
$.each(a, function(i, val) {
console.log(i + ": " + val); //Just for me to see that it's working
$(navLi).attr('href', '#'+val);
});
});
당신이 희망이 볼 수 있듯이, 나는 사이드 바에서 각 링크에 a
배열의 각 개별 ID를 매핑하는 데 노력하고있어. 하지만, 내 결과는 단지 다음과 같이 각 href="#"
에 배열의 마지막 ID를 추가하는 것을 끝 : 왜이 작동하지
<li>
<a href="#ui-id-33">Title of Post</a>
</li>
<li>
<a href="#ui-id-33">Title of Post</a>
</li>
어떤 아이디어?
나는 질문 jQuery를 UI에 대해 알고 있지만, 단지의 경우 다른 사람이 가로 질러 실수를 한단다 문제. jQuery UI로부터 독립된 jQuery 스크립트를 만들었습니다. JS를 사용할 수 없게 된 경우에도 (예 : PHP가 작동하도록 서버 측을 설정해야 할 때조차도) 역방향 링크가 허용됩니다. 모두 readme에 설명되어 있습니다. 내 첫 repo 및 게시 된 스크립트이므로 댓글/커밋을 원합니다 .-) [pushStateAccordion] (https://github.com/CanRau/pushStateAccordion) – Can