0

我写了一个类似于这个例子的简单脚本。问题是点击事件只绑定到条件语句中的第一个#id。我对为什么会发生这种情况的想法是,每个语句中都没有将 ID 与 click 函数中的类相关联,但是当我尝试添加 var 时,点击根本没有触发。请告诉我哪里出错了。谢谢

$(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

你可以像这样检查他们的身份证

$(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

由于您已经为元素使用了 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

我认为您在思考问题,也不知道您可以使用什么。我会利用您链接上的数据属性。我将假设它们不是带有 HREF 的典型 A 标签,因为如果是这样,您不应该使用 JavaScript。

<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

如果我的理解对您的要求是正确的,那么您有一个名为“someclass”的 css 类,其中包含超链接。您需要通过 jQuery 动态设置这些超链接的 URL,对吗?如果是这样,那么您可以尝试以下代码:

<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 回答