Jquery find()不使用两个具有另一个子串的ID

时间:2016-06-07 05:43:13

标签: jquery find undefined

我有像这样的HTML代码

<div id="city-parrent">
<input id="london" type="checkbox" value="London" name="c_city_2">
<input id="london_r" type="checkbox" value="London" name="c_city_r_2">
</div>

当我想用

选择第一个复选框时
var object_found = $("#city-parrent").find("#london");
alert(object_found.val());

它提供了一个未定义的警报

当我选择具有相同代码的第二个时,它不会给出未定义的警报

var object_found = $("#city-parrent").find("#london_r");
alert(object_found.val());

通常这段代码很好,但我在for循环中有这个代码,这个问题就出现了。这是for循环 [参见for循环]] 1

3 个答案:

答案 0 :(得分:0)

应该可以正常工作。你有什么版本的Jquery? 你的版本应该工作,有时你可能需要用jquery包装它。 $(object_found).val()

检查一下,它有效。

https://jsfiddle.net/atg5m6ym/5585/

答案 1 :(得分:0)

我认为代码没有任何问题:JSFIDDLE

尝试将代码括起来:

    $(document).ready(function(){
you code is here
});

答案 2 :(得分:0)

Loop通过array并检查元素是否存在。这可以防止您收到错误。 ID .find()只需使用普通选择器$('#id')即可,因为id只有一个,否则您将获得第一个。

var array_cont = ['london', 'london_r']
array_cont.map(function(ac) {
    $elem = $('#' + ac);
    if ($elem.length) {
        alert($elem.val());
        $elem.attr('checked', true);
    }
})

var array_cont = ['london', 'london_r']
array_cont.map(function(ac) {
  $elem = $('#' + ac);
  if ($elem.length) {
    alert($elem.val());
    $elem.attr('checked', true);
  }
})
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<div id="city-parrent">
  <input id="london" type="checkbox" value="London" name="c_city_2">
  <input id="london_r" type="checkbox" value="London2" name="c_city_r_2">
</div>