カテゴリー: jQuery

  • wordpressでGoogle Libraries APIのJQueryを使う

    サイトの高速化を図るためにGoogleにホスティングされているjqueryを使いたいとき、WordPressのデフォルトのjQueryが邪魔で仕方ないことが結構ありまして。。。
    そんな時functions.phpで少しのコードを書くだけでどうにでもなります。

    [php]
    //Replace jQuery
    function rep_jQuery(){
    if (!is_admin()) {
    wp_deregister_script(‘jquery’);
    wp_enqueue_script(‘jquery’,’http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js’);

    wp_deregister_script(‘jquery-ui-core’);
    wp_enqueue_script(‘jquery-ui-core’,’http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js’);
    }
    }

    add_action(‘init’,’rep_jQuery’);
    [/php]

    管理画面でも使いたい場合はif文を外してもらえば全てに適応されます。

    この例だと、jquery1.5系と、jQuery UIの1.8系の最新版が読み込まれます。
    その他細かい仕様等はGoogleさんに聞いてみてください、
    http://code.google.com/apis/libraries/devguide.html

  • jQueryでフォームのバリデート

    bassistance.de » jQuery plugin: Validation
    とかjQueryでフォームの入力チェックのプラグインは高機能なものがあるのですが、勉強ついでに作ってみました。

    (さらに…)

  • jQuery hashchange eventを使ったテーマ。

    jQuery hashchange eventを使ったWordPressテーマを作成してみました。

    デモサイトはコチラ

    一応HashLogなんていうそのまんまな名前です。
    Ver0.1というアルファバージョンです。一応CSS周りはIE7までOKのはずです。
    WordPress3以上対応です。

    制作の元ネタにでもして頂けたらと思います。

    ダウンロードはこちらからどうぞ。
    hashlog

    これだけではちょっとあれなのでJS周りのソースを張っておきます。

    [php]
    <script type="text/javascript" src="<?php bloginfo( ‘stylesheet_directory’ ); ?>/js/jquery.ba-hashchange.min.js"></script>
    <script type="text/javascript" src="<?php bloginfo( ‘stylesheet_directory’ ); ?>/js/jquery.easing.1.3.js"></script>

    <script type="text/javascript">
    var blogUrl = "<?php bloginfo( ‘url’ ); ?>";
    </script>

    <script type="text/javascript">

    //ハッシュ付にリダイレクトさせる。
    if ( location.href != blogUrl+"/") {
    var index = location.href.indexOf(blogUrl+"/#",0);
    if(index < 0){
    var goHash = location.href.replace(blogUrl, ”);
    location.href =blogUrl+ ‘#’ + goHash;
    }
    }

    jQuery(function($){

    //hrefをハッシュ付に変更
    function changeHref(){
    $("#contentsArea a,#siteId a,#widgetArea a").each(function(){
    var setHref = $(this).attr("href").replace(blogUrl, ‘#’);
    if(setHref.match(/^\//)){
    setHref = "#"+setHref;
    }

    $(this).attr({href:setHref});
    });
    }
    changeHref();

    //Ajaxで変更する部分
    var contentsArea = $("#contentsArea");
    contentsArea.css({height:0,opacity:0,marginBottom:0});

    var nowHash = "";
    $(window).hashchange(function() {
    var setHash = location.hash.replace(‘#’, ”);
    //for Front Page
    if(!setHash){
    setHash = "/?p=0";
    }
    //ページ内リンク(コメントの返信は除く)
    if(setHash.indexOf("#",0)>-1 && setHash.indexOf("respond",0)<0){
    var sel = setHash.match(/(#.+)$/);
    var target = $(sel[1]).offset().top;
    $(‘html,body’).delay(100).animate({ scrollTop: target }, 200,"easeOutQuart");

    }else{

    //コンテンツの削除
    contentsArea.animate({height:0,opacity:0,marginBottom:0},200,function(){
    //ロード
    $(this).hide().load(setHash+" #contents",function(){
    //表示
    $(this).delay(200).show().animate({height:$(this).find("#contents").height(),opacity:"1",marginBottom:"36px"},200,"easeOutQuart",function(){
    changeHref();
    //コメントの返信だった場合の処理
    if(setHash.indexOf("respond",0)>-1){
    var respondOffset = $("#respond").offset().top;
    $(‘html,body’).delay(100).animate({ scrollTop: respondOffset }, 200,"easeOutQuart");

    }

    });
    });
    });
    }
    nowHash = setHash;

    });

    //検索フォーム
    $("form").submit(function(){
    var s = $("#s").val();
    location.href = ‘/#/?s=’+s;
    return false;

    });

    $(window).hashchange();

    });
    </script>

    [/php]

    という感じでWordPressとの連携をとっています。トップページの記事はパラメーターにp=0を入れて表示しています。page_idやp等に存在しない値を放り込むとトップページの内容を表示することを利用しています。
    空白だといまいちうまくいきませんでしたので、こんなおかしなことをやっています。

    indexOfとmatchとか色々混在していて見づらいソースですが、そこはご愛敬ということで、ご勘弁下さい。徐々に直していこうと思いますので。

  • jQuery hashchange event を使ってみた。

    昨日やっていたHTML5とJavaScriptの切っても切れない関係/CPI x CSS Nite「After Dark」(1)で紹介されていたjQuery hashchange event のデモを早速作ってみました。

    https://torounit.com/demo/hashtag/

    1/24:スクリプトエラーを修正しました。

    制作に当たっては5509様のところの
    Ajaxやタブ切替には必須かも?ブラウザの「戻る」「進む」を有効にするjQueryのhashchangeプラグイン
    を参考にさせてもらっていますです。

    [js]
    $(function(){
    $(window).hashchange(function() {
    $("hoge").load(location.hash.replace(‘#’, ”)+ "hogehoge");
    });
    $(window).hashchange();

    $("a").each(function(){
    var setHref = $(this).attr("href").replace("http://hoge.com", "#");
    $(this).attr({href:setHref})
    });

    });

    [/js]

    のように使います。

    追記:学び処 立志塾様のサイト制作で活用させて頂きました。

    aタグのhrefのドメインを削除して代わりに#を入れています。これで、画面遷移が無くなります。
    ソースに直接#を書くとjs非対応の場合に不都合が出てくるので、jsで置換します。
    js無しの場合は普通にリンクで飛ぶようにしてあげています。

    このやり方だと、直接内部のページに飛んだときにjsで#付きにリダイレクトさせてあげる必要があります。

    また、ソースに記述する場合、#の代わりに#!を用いると、Googleはトラッキングしてくれるようです。サイトによって選択してゆく必要がありそうですね。
    ただし、そんな必要があるのってtwitterのようなwebアプリとかですかね。

    やはり画面遷移を無しにコンテンツを見せることができるというのはかなり大きなメリットになるのではないですかね。。。

    しかし、これhashchangeって言うんですね。知らなかった。というか、名前がわからないからどう調べていいかわからなかったという。。。

  • 投稿時にカテゴリが複数のときアラートを出す

    WordPressをCMSとして使うとき、カテゴリが複数セットされていたり、未選択の場合などが考えられます。
    意外にあれに苦しむことがあるので、functions.phpで対応しようと思います。

    (さらに…)

  • floatさせた要素、inline-blockの高さをそろえる。

    display:boxはまだまだ実装が微妙だし、display:inline-blockやfloatだと、要素の高さ自体は変わらなくてborderとかbackgroundを使ったときいまいち困ったり。

    というわけでそんなとき用のjs。相変わらずjQueryです。

    (さらに…)