为什么jquery"改变“;事件在我的示例中不起作用

Why jquery "change" event does not work in my example?

本文关键字:我的 不起作用 jquery quot 改变 为什么 事件      更新时间:2023-09-26

[name="tip"]具有第一个值时,显示特定元素,否则将显示另一个元素。

这两个元素都具有display:none属性。当我加载页面时,我会自动检查所需元素中的选择值和音量。

一切都很好,除非我尝试更改所选选项:什么都没发生。我将javascript onchange和jquery .change()都添加到该项中,但没有发生任何事情。你能告诉我为什么它在我的例子中不起作用吗?

<form id="fm-account-properties-tab" method="POST">
<table width="300px" style="margin-top:10px;" align="center" >
    <tr>
        
        <td align="left">
        <select class="easyui-combobox" name="tip" style="width:200px;" class="easyui-validatebox" required="true" onchange="changeType();">
                    <option value="l1">l1</option>
                    <option value="l2">l2</option>
                    <script>
                        $(document).ready(function(){
                            $('[name="tip"]').val('<?php echo $a['tip'];?>');
                        });
                    </script>
        </select>
        </td>
    </tr>
    <tr id="l1" style="display:none">
        <td align="left">
        <select class="easyui-combobox" name="l1"  style="width:200px;" class="easyui-validatebox" required="true">
                    
        </select>
        </td>
    </tr>
    <tr id="l2" style="display:none">
        <td align="left">
        <select class="easyui-combobox" name="l2"  style="width:200px;" class="easyui-validatebox">
                    
                    
        </select>
        </td>
    </tr>
</table>
</form>
<script>
function changeType()
{
if($('[name="tip"]').val()=='l1')
    {
    $('#l1').fadeIn();
    $('#l2').hide();
    }
else
    {
    $('#l2').fadeIn();
    $('#l1').hide();
    }
}

$(document).ready( function () {
        
        changeType();
            $('[name="tip"]').change(function(){ alert('1');});//it never alerts me
    });

.on用于较新的jQuery版本(jQuery>1.7.x参考)

function changeType() {
    if ($('[name="tip"]').val() == '___') {
        $('#1').fadeIn();
        $('#2').hide();
    } else {
        $('#2').fadeIn();
        $('#1').hide();
    }
}
$(document).ready(function () {
    changeType();
    $('select[name="tip"]').on('change', function() {
        changeType();
    });
});

您的select中有一个double-class属性。

这是一个工作样品http://jsfiddle.net/tvhKH/

您可能应该使用js error event来找出该代码中的错误。例如<script> try {....all your codes here...} catch(err) {alert("THE ERRor" + err.message);} </script>。这些代码将提醒您的错误及其发生的确切点。祝你好运

首先,您应该尝试添加

console.log("It works");

alert("It works")

在你的方法中,这样你就知道它是否被实际调用了。

那么我认为问题可能来自于FadeIn()只适用于css{display:none}和可见性不同于"hidden"的元素,所以你确定你的元素是吗?如有疑问,您可以更换

.fadeIn();

通过

.css('visibility','visible').hide().fadeIn(); // hide() does the same as display: none

然后请告诉我,如果你有更多的信息后,做。