代码之家  ›  专栏  ›  技术社区  ›  Tower

关于AJAX和HTML的帮助

  •  1
  • Tower  · 技术社区  · 15 年前

    我有类似于

    <div class="menu">
        <div>Latest</div>
        <div>Oldest</div>
    </div>
    

    我循环遍历JavaScript中的所有项,并在它们上绑定一个click事件监听器。现在在事件回调中,我想知道要通过AJAX获取哪些数据。我如何从一个项目中找出答案?我知道我应该在项目中放些东西来确定项目的类型,但是我应该把它放在哪里呢?

    4 回复  |  直到 15 年前
        1
  •  5
  •   kkyy    15 年前

    如果你用的是 div s、 使用 className

    <div class="menu">
        <div class="latest">Latest</div>
        <div class="oldest">Oldest</div>
    </div>
    
    ...
    
    function divClickHandler(event) {
      var div = event.target;
      if (div.className == 'latest')
        // load latest
      else if (div.className == 'oldest')
        // load oldest
    }
    

    如果你使用html5,一个更好的解决方案是 custom data- attributes ;像这样:

    <div class="menu">
        <div data-type="latest">Latest</div>
        <div data-type="oldest">Oldest</div>
    </div>
    

    最优雅的解决方案是 a 分区

    <div class="menu">
        <a href="?whatever">Latest</a>
        <a href="?barfoo">Oldest</a>
    </div>
    
    ...
    
    function aClickHandler(event) {
      var a = event.target;
      // do your ajax call using a.href
      return false;
    }
    
        2
  •  1
  •   joni    15 年前

    你可以通过一个类或id来指定它。

    <div class="menu">
        <div class="latest">Latest</div>
        <div class="oldest">Oldest</div>
    </div>
    

    测试它 element.className 在循环中。

        3
  •  0
  •   Brian    15 年前

    我不能百分之百确定你在问什么。但是,如果您希望将“用户数据”放在元素上,您可以只使用一个属性并在JavaScript中选择该属性。

    <div class="menu">
        <div userdata="Latest">Latest</div>
        <div userdata="Oldest">Oldest</div>
    </div>
    
        4
  •  0
  •   GitaarLAB    11 年前

    指定您所指的元素类型是有益的。

    但是,可以从元素的id中识别该元素,也可以指定自己的属性并检索它。

    例子:

    HTML格式:

    <button id='mybtn' attr1='123'>click here</button>
    

    $("#mybtn").bind('click', function() {
    
        var attr = $(this).attr('attr1');
    
        // use attr value for any specific logic
    
    });