我有这样的代码:
<?php if ($this->session->userdata('permission') == 4 || $this->session->userdata('permission') == 3) : ?>
<select name="caffe" id="caffe">
<?php foreach($caffe as $key) : ?>
<option value="<?php echo $key['id_caffe'] ?>"><?php echo $key['name'] ?></option>
<?php endforeach; ?>
</select>
<div id="gll_select">
<script>
var caffe = $("#caffe").val();
var cff_name = $("#caffe option:first").text();
$("#gll_select").load("<?php echo base_url() ?>form/galleries", {id : caffe}, function(){
$("#gll").on('change', function(){
var cff_name = $("#caffe option:selected").text();
get_gallery(cff_name);
console.log(cff_name);
});
});
</script>
</div>
<?php else : ?>
<input type="hidden" name="caffe_name" id="caffe_name" value="<?php echo $caffe_name ?>" />
<input type="hidden" name="caffe_id" id="caffe_id" value="<?php if(isset($caffe_id)) echo $caffe_id; ?>" />
<div id="gll_select">
<?php if (isset($gallery)) : ?>
<select name="gll" id="gll">
<?php foreach ($gallery as $key) : ?>
<option value="<?php echo $key['id_gallery'] . " " . $key['name'] ?>"><?php echo $key['name'] ?></option>
<?php endforeach; ?>
<?php endif; ?>
</select>
</div>
<?php endif ?>
和jquery代码如下:
if ($("#caffe".length)){var cff_name = $("#caffe option:first").text(); }
else{var cff_name = $("#caffe_name").val();}
问题在于 - 第一个陈述始终为真(如果PHP IF statement is FALSE
, #caffe 将不存在)。什么似乎是问题?
答案 0 :(得分:7)
应该是
if ($("#caffe").length) { ... }
您的代码:
if ($("#caffe".length)) { ... }
获取字符串的长度不变并将其传递给jQuery。你总是从调用jQuery main函数($)得到一个非null结果,所以把它作为if
语句的一部分转换为boolean的结果总是正确的。
当您测试返回的jQuery对象的.length
属性时,搜索选择器时,您将检查该数字是否为非零。
答案 1 :(得分:3)
将$("#caffe".length)
更改为$("#caffe").length
答案 2 :(得分:2)
我想我看到了问题......
if ($("#caffe").length){var cff_name = $("#caffe option:first").text(); }
.length
不是选择器的一部分,它是包装集的属性。