【问题标题】:How get the class of the div on clicking the select option inside that div?单击该div内的选择选项如何获取该div的类?
【发布时间】:2013-11-03 13:45:25
【问题描述】:

我有两个 div 显示其中的产品详细信息内容,如下所示:

  <div class="product-style-odd">
        <select>

            <option value="active" onClick="changeStatus(<?php echo $productid;?>,0)">Activate</option>
            <option value="inactive" onClick="changeStatus(<?php echo $productid;?>,1)">Deactivate</option>

        </select>
    </div>

    <div class="product-style-even">
        <select>

            <option value="active" onClick="changeStatus(<?php echo $productid;?>,0)">Activate</option>
            <option value="inactive" onClick="changeStatus(<?php echo $productid;?>",1)>Deactivate</option>

        </select>
    </div>

    <script>
        function changeStatus(productid, status){
            //Now what I want to reference and hide that div in which changeStatus function was invoked
        }
    </script>

现在对上面的代码做一点解释。这些奇数和偶数样式的 div 都在循环内,因此它们会根据循环中的迭代次数而重复。 现在我想要实现的是,当用户从选择菜单中单击非活动选项时,该特定 div 应该淡出,我通过 Ajax 更改该产品的状态。

我不知道如何获取被点击的特定 div 的类。 很抱歉代码缩进不佳,我对 SO 编辑器不太熟悉。

编辑: 问题仍然没有解决。

原因是那个页面的结构非常复杂。首先我有 body,然后是一个 div,然后是几个 div,然后是一个带有 product-style-even 或 product-style-odd 类的 div。现在,如果我输入代码来选择父 div,那么它会在 body 之后选择 div。

【问题讨论】:

  • 一个对象可以有多个类......它们都用空格分隔。所以你需要处理这个

标签: javascript jquery html css


【解决方案1】:
$('select').click(function(){
    var divClass=$(this).parent('div').attr('class');
});

【讨论】:

    【解决方案2】:

    这样的事情怎么样?

    $("select").change(function () {
        var selectVal;
        $("select option:selected").each(function () {
            selectVal = $(this).val();
        });
        if (selectVal == 'inactive') {
            var selectParentDiv = $(this).parents('div');
            selectParentDiv.fadeOut();
            console.log(selectParentDiv.attr('class'));
        }
    });
    

    示例:http://jsfiddle.net/rjngr/3/

    【讨论】:

    • 将对象的所有类拉为 1 个大字符串。也许在 [space] 上对其进行标记,以便有一个类列表?
    • 它应该只返回 $(this).. 的 div 类,也就是被点击的 div。
    • 因为一个 div 可以有多个类......它会返回所有类的字符串。
    • 我明白了……您的问题中没有提到这种担忧。您可以使用空格字符(如果需要)拆分字符串,或者检查您的测试类是否存在于返回的字符串中。
    • 已编辑以解决您的具体问题。您可以在 if 语句中添加您需要的任何代码,但是如果从 select 中选择了非活动选项,这应该会得到您的 fadeOut()。
    【解决方案3】:

    使用 jQuery:

    $(this).parents('div:first').hide();
    

    在函数体changeStatus(productid, status)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-21
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多