这个函数的jquery bug

时间:2012-02-02 14:59:11

标签: jquery

我无法获得无线电盒改变的div字段的id。如果我从html中删除表格编码,这种编码就行了。有什么想法吗?

示例HTML:

        $PLAN_REPORT_DATE_HTML .= qq|<div id="planreportdate-$TECH_ID---$METRIC_ID---$SIZE_ID">

        <table><tr><td>
        ${FOUNDRY_NAME}_${TECHFLAVOUR}-$SIZE_VALUE<br><br>

        <input type="radio" name="radiovalue-$count" value="Latest" > Latest <br> 
        <input type="radio" name="radiovalue-$count" value="MajorUpdates" > Major Updates <br>
        <input type="radio" name="radiovalue-$count" value="All" >All<br>
        </td></tr><tr><td>
        <select name="plan-$count" multiple id="plan-$TECH_ID---$METRIC_ID---$SIZE_ID" size="5">|;

Jquery Coding

     $("div[id^='planreportdate-'] input[name^='radiovalue-']").change(function(event) {

            var id_value = $(this).parent().attr('id');
            var value= $("div[id="+ id_value + "] input[name^='radiovalue-']:checked").val();

            var selectboxid = id_value.replace(/^planreportdate-/g,"");

            if (value == "All")
            {
                // THIS CODING SELECTS ALL THE SELECT OPTIONS

                $("#plan-" + selectboxid).each(function() {
                    $("#plan-" + selectboxid + " option").attr("selected","selected");
                });
            }

2 个答案:

答案 0 :(得分:0)

使用.closest() jQuery函数查找最接近DOM中单选按钮的DIV。使用.parent()将不起作用,因为单选按钮的直接父元素是<td>元素,而不是您感兴趣的<div>元素。如下所示:

var id_value = \$(this).closest('div').attr('id');

答案 1 :(得分:0)

我会向父级添加一个类,并使用.parents(),如下所示:

    $PLAN_REPORT_DATE_HTML .= qq|<div id="planreportdate-$TECH_ID---$METRIC_ID---$SIZE_ID" class="parentOfRadios">

    <table><tr><td>
    ${FOUNDRY_NAME}_${TECHFLAVOUR}-$SIZE_VALUE<br><br>

    <input type="radio" name="radiovalue-$count" value="Latest" > Latest <br> 
    <input type="radio" name="radiovalue-$count" value="MajorUpdates" > Major Updates <br>
    <input type="radio" name="radiovalue-$count" value="All" >All<br>

    //.parents() to select
    var id_value = $(this).parents('.parentOfRadios').first().attr('id');

查看.parents().closest()之间的区别。