javascript
  • dom
  • jquery-mobile
  • 2012-08-16 65 views 1 likes 
    1

    有沒有辦法讓jQuery Mobile將JavaScript生成的鏈接渲染爲按鈕小部件,就像它在加載頁面時自動執行的一樣?如何從JavaScript創建jQuery Mobile按鈕?

    我有這樣的JavaScript來創建動態鏈接:

    var ws=document.getElementById('workspace'); // empty <div id="workspace"></div> 
    ws.innerHTML='<a id="myb" href="foo.php" data-role="button">baz</a>'; 
    

    當然,這只是產生的,而不是一個按鈕,一個正常環節,所以我的問題是如何使jQueryMobile動態創建按鈕,因爲如果從一開始就在頁面中出現相同的<a id="myb" href="foo.php" data-role="button">baz</a>,它會這樣做?

    編輯:

    像這樣的腳本:

    $('#tagspace').html('<a id="myb" data-inline="true" data-ajax="false" 
            href="boo.php" data-role="button">baz</a>') 
           .button() 
           .click(function() { window.location.href=this.href;}); 
    

    是一種進步。它確實是導致一個按鈕(整頁寬度),並且對標籤文本之外的點擊很敏感。但是,this似乎未映射到包含預期鏈接「目標」的元素。

    這樣做的結果DOM:

    <div aria-disabled="false" class="ui-btn ui-shadow ui-btn-corner-all ui-fullsize 
                 ui-btn-block ui-btn-up-c" data-mini="false" data-inline="false" data-theme="c" data-iconpos="" data-icon="" data-wrapperels="span" data-iconshadow="true" data-shadow="true" data-corners="true"> <span class="ui-btn-inner ui-btn-corner-all"> 
         <span class="ui-btn-text">baz</span> 
    </span> 
        <div aria-disabled="false" class="ui-btn-hidden" id="tagspace"> <a id="myb" data-inline="true" data-ajax="false" href="boo.php" data-role="button">baz</a> 
    
        </div> 
    </div> 
    

    所以,它仍然不是同一種按鈕。

    +0

    你爲什麼不使用jQuery Mobile的 – 2619 2012-08-16 08:31:43

    +0

    @ al0neevenings,你如何建議我使用jquery mobile? – MattBianco 2012-08-16 11:07:00

    +0

    @Matt,'this'映射到'click'處理程序中的是什麼? – 2012-08-16 14:24:59

    回答

    1

    您可以通過將您的元素包裝到jQuery對象中並調用button()方法來創建按鈕構件。

    $("#workspace").html("<a id='myb' href='foo.php' data-role='button'>baz</a>") 
           .button(); 
    

    更新: Button控件阻止鏈接的默認行爲,所以你必須添加一個click處理程序,如果你想要的行爲回來:

    $("#workspace").html("<a id='myb' href='foo.php' data-role='button'>baz</a>") 
           .button() 
           .click(function() { 
            window.location.href = this.href; 
           }); 
    
    +0

    謝謝!我正在尋找答案! 順便說一句,是否有理由繞屬性值使用單引號而不是其他方式? – MattBianco 2012-08-16 08:36:10

    +0

    @Matt,這是個人偏好。我使用的兩種語言都經常在句子中使用單引號,所以我更喜歡字符串的雙引號。你可以放心地忽視:) – 2012-08-16 08:47:31

    +0

    太好了。現在我有一個漂亮的按鈕,當我點擊它時不會做任何事...... – MattBianco 2012-08-16 08:54:00

    相關問題