如果是静态的html代码,那么a标签的click事件是可以触发的
但是,通过js生成的html代码,无法触发click事件,这是为什么?
可以通过为a标签加个href,调用js方法触发事件,但是我不想这样
有什么办法解决?
var str = "<div class=\"region-head\">选择省份</div><ul id=\"ulProvince\" class=\"clearfix\">"; 
var arraycode = astr.split("|"); 
for (i = 0; i < arraycode.length; i++) { 
  var tempstr = arraycode[i].split(","); 
  str += "<li><a id=\"" + tempstr[0] + "\">"  + tempstr[1] + "</a></li>"; 

str +="</ul>";
$('#' + divid).html(str);$("#ulProvince a").click(function(){
alert(1);
//$('#selectProvince').attr("value", this.innerHTML ) ;
//$('#provinceId').attr("value", this.id);
//targetId.hide();
});

解决方案 »

  1.   

    //使用live()方法绑定事件即可:
    $("#ulProvince a").live('click', function() {
    ///
    });
      

  2.   

    你用$("#xxx").append(string)函数试试
    这里是把string字符串写入id为#xxx的元素当中  并将所有标记都解析出来
      

  3.   

    页面代码
     <div class="li">
     
      <label class="lw" for="province"> 省  份:</label> 
    <input name="province" id="selectProvince" type="text" class="inputtext" maxlength="60"
    value="请选择省份" readonly="readonly" style="cursor:hand"/>  
    <span class="red" id="remind3"></span> 
    <input id="provinceId" type="hidden" value="0" name="provinceIdHidden"/> 
    <div id="provinceTips" class="div-region"
    style="position: absolute; left: 458px; top: 319px; z-index: 999; display: none;">

    </div>
              
     </div> 
    js代码var astr =  "110000,北京|120000,天津|130000,河北|140000";
    // 处理省份
    $.fn.f_selectProvince = function(targetId) {
    var _seft = this;
    var targetId = $(targetId); this.click(function(){
    var A_top = $(this).offset().top + $(this).outerHeight(true);  //  1
    var A_left =  $(this).offset().left;
    targetId.bgiframe();
    //ShowProvinceList("provinceTips");
    //显示在输入框下方
    //targetId.show().css({"position":"absolute","top":A_top+"px" ,"left":A_left+"px"});
    //指定位置显示 css控制
    targetId.show();
    }); $("#ulProvince a").click(function(){
    alert(1);
    $('#selectProvince').attr("value", this.innerHTML ) ;
    $('#provinceId').attr("value", this.id);
    targetId.hide();
    });

    $("#ulProvince a").live('click', function() {
    alert(1);
    }); 
    $(document).click(function(event){
    if(event.target.id!=_seft.selector.substring(1)){
    targetId.hide();
    }
    });
     
    targetId.click(function(e){
    e.stopPropagation();
    });
     
        return this;
    };
     
    $(function(){
    $("#selectProvince").f_selectProvince("#provinceTips");
    });
    function ShowProvinceList(divid) { 
    var str = "<div class=\"region-head\">选择省份</div><ul id=\"ulProvince\" class=\"clearfix\">"; 
    var arraycode = astr.split("|"); 
    for (i = 0; i < arraycode.length; i++) { 
      var tempstr = arraycode[i].split(","); 
      str += "<li><a id=\"" + tempstr[0] + "\">"  + tempstr[1] + "</a></li>"; 

    str +="</ul>";
    $('#' + divid).html(str);
    }
    再有就是jquery.bgiframe.js和jquery.js
      

  4.   

    //ShowProvinceList("provinceTips");这个忘了把注释去掉就发上来了
      

  5.   

    live是没有错的,是你的代码阻止了click事件的发生    targetId.click(function(e){
            //e.stopPropagation();//========注释掉这句就行了
        });
      

  6.   

    注释掉那句也不行,怪了
    不用jquery了,只能直接添加onclick事件解决