0

この例に似た簡単なスクリプトを作成しました。問題は、クリックイベントが条件ステートメントの最初の#idにのみバインドされていることです。これが発生する理由についての私の考えは、各ステートメントにIDをクリック関数のクラスに関連付けるものがないということですが、変数を追加しようとすると、クリックがまったく発生しませんでした。どこが間違っているのか教えてください。ありがとう

$(document).ready(function(){
        $('.someclass').bind('click', function() {
          if('#id1')
          {
            window.location = "someURL";
          }
          else if('#id2')
          {
             window.location = "someURL2";
          }
          else if('#id3')
          {
              window.location = "someURL3";
          }
            });
    });
4

5 に答える 5

3

このようにIDを確認できます

$(document).ready(function () {
    $('.someclass').bind('click', function () {
        if(this.id === 'id1') {
            window.location = "someURL";
        } else if(this.id === 'id2') {
            window.location = "someURL2";
        } else if(this.id === 'id3') {
            window.location = "someURL3";
        }
    });
});
于 2012-10-06T16:28:13.087 に答える
2

検討:

<span data-url="someURL">Link 1</span>
<span data-url="someURL2">Link 2</span>

その後:

$wrapper.on( 'click', 'span', function () {
    window.location = $( this ).data( 'url' );
});

where$wrapperには、すべての「リンク」を含む DOM 要素が含まれています。

ここでの考え方は、JavaScript コード (= 動作) からデータを分離することです。URL は DOM にある必要がありますdata-*。属性を使用してそれらを保存できます (上で示したように)。

于 2012-10-06T16:30:26.713 に答える
0

私はあなたが物事を考えすぎており、またあなたが使用するためにそこに何があるのか​​わからないと思います。リンクのデータ属性を活用します。JavaScriptを使用するべきではないため、HREFを使用する通常のAタグではないと想定します。

<div data-url="http://www.someurl1.com">...</div>
<div data-url="http://www.someurl2.com">...</div>
<div data-url="http://www.someurl3.com">...</div>

<script>
    $('body').on('click','div[data-url]', function(ev) {
        ev.preventDefault();
        window.location = $(this).data('url');
    }
</script>
于 2012-10-06T16:34:09.450 に答える
0

要素にはすでに ID を使用しているため、それらを個別に使用してクリック関数をバインドする必要があります。それはより簡単で、うまくいきます:)

$(document).ready(function(){
    $('#id1').click(function(){
        window.location = "someURL";
     });
    $('#id2').click(function(){
        window.location = "someURL2";
     });
    $('#id3').click(function(){
        window.location = "someURL3";
     });
});

元の方法が気に入った場合 (そうすべきではありません ;-))、これを試してください:

      if( $(this).attr("id") == 'id1' )
      {
        window.location = "someURL";
      }
于 2012-10-06T16:25:51.867 に答える
0

私の理解があなたの要件に合っている場合、ハイパーリンクを持つ「someclass」と呼ばれるcssクラスがあります。これらのハイパーリンクの URL を jQuery を介して動的に設定する必要があります。よろしいですか? その場合は、次のコードを試すことができます。

<script type="text/javascript" src="../Scripts/jQuery/jquery-1.7.2.js"></script>
<script type="text/ecmascript">
    $(document).ready(function () {

        $(".someclass > a").live("click", function () {
            var currentID = $(this).attr("id");
            if (currentID == "id1") {
                window.location = "http://google.com";
            }
            else if (currentID == "id2") {
                window.location = "http://stackoverflow.com";
            }
            else if (currentID == "id3") {
                window.location = "http://jquery.com";
            }
        });
    });

</script>

<div>
    <div class="someclass">
        <a id="id1">id 1</a>
        <a id="id2">id 2</a>
        <a id="id3">id 3</a>

    </div>
</div>
于 2012-10-06T17:08:51.407 に答える