1

単純化しようとしていることに問題があります。リンクがクリックされたときに、その CSS を jQuery 経由で更新する必要があります。私の主な質問は、Javascript のthisオブジェクトを取り、それを jQuery オブジェクトに変換して扱いやすくするにはどうすればよいかということです。

私のコードは次のようになります。

<!-- HTML -->
<a href="javascript:load('page.php', this);">load some page</a>
<a href="javascript:load('other.php', this);">load other page</a>

// JS
function load(url, linkObj) {
    loadPageWithURL(url);
    $(linkObj).css('text-decoration', 'underline');
}

ただし、これは機能しません。明らかに、リンクが選択されたときに下線を引くだけではありません。私はthis間違って使用していますか、それとも生のJSオブジェクトをjQueryによって認識されるオブジェクトに変換するだけの問題ですか?

4

3 に答える 3

7

その関数は正常に機能します ($(linkObj)正しい) が、スクリプトhrefは ononclick属性ではなく the にあります。したがって、実行されることはありません。

変化する:

<a href="load('page.php', this);">load some page</a>
<a href="load('other.php', this);">load other page</a>

に:

<a href="#" onclick="load('page.php', this); return false;">load some page</a>
<a href="#" onclick="load('other.php', this); return false;">load other page</a>
于 2013-07-16T20:34:20.183 に答える
6

インライン イベントを使用しないでください。jQuery を使用してそれらをバインドします。

<a class="load" href="page.php">load some page</a>
<a class="load" href="other.php">load other page</a>

次に JavaScript で

$(function(){
    $('.load').click(function(e){
        e.preventDefault();

        loadPageWithURL(this.href);
        $(this).css('text-decoration', 'underline');
    });
});

更新: ページが読み込まれた後に新しいリンクが追加されている場合は、次を使用する必要があります。

$(function(){
    $(document).on('click', '.load', function(e){
        e.preventDefault();

        loadPageWithURL(this.href);
        $(this).css('text-decoration', 'underline');
    });
});
于 2013-07-16T20:38:51.490 に答える
4

jQuery を使用する利点の 1 つは、目立たない JavaScriptを簡単に記述できることです。つまり、HTML と JavaScript を混在させる必要がないということです。次のようにコードをリファクタリングすることで、要件を改善して達成できます。

HTML:

<a href="page.php">load some page</a>
<a href="other.php">load other page</a>

JavaScript コードを 1 か所に:

jQuery(function($) {
  $(document).on('click', 'a', function() {
    var $link = $(this);
    load($link.attr('href'), $link);
    return false;
  });
});

:前のコードはすべてのリンクをキャッチします。これを行いたくない場合は、特定のクラス名を追加できます。クラス名が であるとするとload、コードは次のように書き直す必要があります。

HTML:

<a class="load" href="page.php">load some page</a>
<a class="load" href="other.php">load other page</a>

そしてあなたのJavaScript:

jQuery(function($) {
  $(document).on('click', '.load', function() {
    var $link = $(this);
    load($link.attr('href'), $link);
    return false;
  });
});

提供されたコードに関連する特定のものがある場合は、コメントに記入してください。

于 2013-07-16T20:38:26.477 に答える