【问题标题】:Choose correct html tag via jQuery in Grails在 Grails 中通过 jQuery 选择正确的 html 标签
【发布时间】:2013-09-26 09:55:44
【问题描述】:

我有 2 个选择框,一个带有汽车名称,第二个带有车型,当我选择汽车名称(例如 BMW)时,第二个选择框必须更新为属于 BMW 的车型。我用 jQuery 创建了这个日志。但问题是,我的网页设计师使用 css3 创建了非常酷的选择框设计,为此他需要隐藏输入并选择具有相同 ID 属性的标签(例如 id="car_model")。当我调用 jQuery 函数时,它会更新隐藏的输入并用选项填充它。如何选择使用 id="car_model" 选择而不是使用相同 id="car_model" 的隐藏类型。

控制者:

class HomeController {

def index() {
    def cars = Car.list();
    render (view: '/index', model:[cars:cars])
}

def getModels(params) {
    def models = Models.findAll {
        car.id == params.id
    }
    println(models)
    withFormat {
        html {
            render(template:'/select',model:[model:models])
        }
        json {
            render models as JSON
        }
    }
}

}

查看:

<div class="row field_select">
                <label class="label_title">Select Maker:</label>                    
                <g:select class="select_styled" name="car_maker" from="${cars}"
                    optionKey="id"
                    optionValue="name"
                    noSelection="['':'- Choose a car -']"
                    onchange="${remoteFunction(
                        action:'getModels.json',
                        onSuccess:'getCarModels(data)',
                        params:'\'id=\' + this.value' )}"/>

            </div>
            <div class="row field_select" >
                <label class="label_title">Select Model:</label>
                <select class="select_styled" name="car_model"></select>
            </div>

jQuery:

function getCarModels(data) {   
var $element = $('#car_model');
$element.empty();
$.each(data, function(id, modelName) {
  var option = $('<option/>').val(id).text(modelName);
  $element.append(option)
});
}

编辑:

【问题讨论】:

  • ids 永远不能相同 - 你可以在输入中使用相同的名称但使用不同的 ids,如果 grail 插件要求你有相同的 ids 我不会使用它

标签: jquery ajax grails-2.0


【解决方案1】:

html 元素的 id 应该是唯一的,您可以分配一个类来选择使用 class selector 选择它。隐藏字段不会得到select的类,你可以区分它。

var $element = $('.selectclass');

您没有其他选择,只有两个具有相同 id 和不同类型的元素,然后您可以通过在选择器中添加 typetag 来选择

Live Demo

var $element = $('select[name=car_model]');

【讨论】:

  • 在您的问题中您提到了 id=car_model 但它是名称。所以这需要名称上的选择器而不是id上的选择器。 $('select[name=car_model]') 会给你你想要的选择
  • 我已经添加了现场演示,你会在这里有更好的想法,jsfiddle.net/rajaadil/F7Z5F
  • 我明白你的意思,但它并没有再次解决问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多