4

我在将 html 元素之一传递给 jQuery 时遇到问题。我知道attr()我们可以访问属性。不过我觉得我做错了什么。

这是我的简单 jQuery 函数:

<script type="text/javascript">
    function test(value) {
        alert(value);
    }
</script>


我有一个由 foreach 循环创建的动态列表框:

<select  multiple="multiple" name="factors1" id="main_factors" style="width: 200px; height: 200px;">

<?php foreach ($array as $option): ?>
    <option onclick="test(<script>this.attr('title').value</script>);"
            id="<?php echo $option[0]; ?>"
            title="<?php echo $option[2]; ?>" 
            value="<?php echo $option[0]; ?>">
        <?php echo $option[1]; ?>
    </option>
<?php endforeach ?>

</select>

例如,当有人单击列表框中的项目时,我希望它的项目显示在我的消息框中。但是这段代码对我不起作用。

onclick="test(<script>this.attr('title').value</script>);"

如何从 onclick 属性将标题属性值发送到我的函数?

提前致谢。

4

4 回答 4

2
onclick="test(this)"

function test(value)
{
    alert($(value).attr('title'));
}

看演示

于 2012-09-07T04:57:20.387 回答
2

试试这个代码。我认为您在代码中犯了错误。

<select  multiple="multiple" name="factors1" id="main_factors" style="width: 200px; height: 200px;" onchange="test(this.value);">

<?php foreach ($array as $option): ?>
<option id="<?php echo      $option[0]; ?>" title="<?php echo $option[2]; ?>" 
value="<?php  echo $option[0]; ?>"><?php echo $option[1]; ?></option>
<?php endforeach ?>


</select>

在你的 jQuery 中:

<script type="text/javascript">
    function test(value)
       {
        alert(value);
       }
    </script>
于 2012-09-07T04:58:33.380 回答
0

您应该需要在元素上使用onchange事件。select

​&lt;select onchange="test(this.value)">

JavaScript:

function test(value) {
    alert(value)        
}​

看演示

于 2012-09-07T05:03:47.227 回答
0

由于您已经导入并正在使用 jQuery,因此最好将事件处理程序与 html 元素分开,作为一种设计与功能的分离:

onclick从您的 php中完全删除:

<select  multiple="multiple" name="factors1" id="main_factors" style="width: 200px; height: 200px;">
<?php foreach ($array as $option): ?>
<option id="<?php echo $option[0]; ?>" title="<?php echo $option[2]; ?>" 
value="<?php  echo $option[0]; ?>"><?php echo $option[1]; ?></option>
<?php endforeach ?>
</select>

change并从 javascript中将函数绑定到事件:

$(document).ready(function() {
    $('#main_factors').change( function() {
        test( $(this).val() );
        // you can also do:
        // test( this.value );
    });
});

function test(value)
{
    alert(value);
}
于 2012-09-07T06:21:24.010 回答