4

#HTML オブジェクトの属性の値を文字を含む文字列として設定できるかどうか疑問に思っています。

私がこれをしたい理由は、指定された要素にページをスクロールする必要がある多くのアイテムがページにあり、「どのアイテムにスクロールする必要がありますか?」というデータを保存したいからです。' data-scrollto 属性として。

したがって、私の JavaScript コードは次のようになります。

function ScrollToElement(lm)
{
    var theTop  = lm.offset().top;
    $("html,body").animate({
        scrollTop: theTop/*,
        scrollLeft: 1000*/
    });
}

// .. and add click event to all such objects : 
$('.scroller').click(function(){
        var theSelector = $(this).attr('data-scrollto');
        ScrollToElement($(theSelector));
    });

したがって、html 要素は次のようになります。

<a class='scroller' data-scrollto='p#p-to-scroll'>Click to scroll to p</a>

安全ですか?

副次的な質問として、なぜ

$(element).data('scrollto');

動作しませんが

$(element).attr('data-scrollto'); 

動作しますか?

4

2 に答える 2

3

W3C 仕様によると、はい、文字 ( ) と文字( )安全に使用できます。U+0023 NUMBER SIGN#U+002E FULL STOP.

属性名、0 個以上の空白文字、1U+003D EQUALS SIGN文字、0 個以上の空白文字、属性値が続きます。属性値には、上記の属性値の要件に加えて、リテラルを含めることはできません。空白文字、任意のU+0022 QUOTATION MARK文字 ( ")、U+0027 APOSTROPHE文字 ( ')、U+003D EQUALS SIGN文字 ( =)、U+003C LESS-THAN SIGN文字 ( <)、U+003E GREATER-THAN SIGN文字 ( >)、またはU+0060 GRAVE ACCENT文字 (`) であり、空の文字列であってはなりません

http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#attributes-0を読んでください。

于 2013-09-03T17:40:50.683 に答える
0

はい、ハッシュ#.データ属性に保存できます。適切なデータ メソッドを使用する必要があります。 http://api.jquery.com/jQuery.data/

var theSelector = $(this).data('scrollto');

data メソッドを使用できない場合は、使用している jQuery のバージョンを確認してください。バージョン 1.2.3 で導入されました。

于 2013-09-03T17:07:39.620 に答える